Pygame:在表面上显示的列表被截断

因此,我正在尝试构建一个应用程序,使用 Pygame 以图形方式显示有关系统的一些信息。我试图显示的信息之一是系统中运行的操作系统进程列表,以及它们的 pid、名称和 CPU 使用百分比。问题是,当我尝试在 pygame 表面上显示它时,它会被截断,就好像试图将整个列表写入屏幕上的单个点一样。当尝试使用计数器将列表分布在屏幕上时,它会变成一条对角线。有什么办法可以正确显示这个列表吗?


(另外,考虑到这是一个巨大的列表,是否有人知道一种根据列表的长度将其分成不同表面的方法?)


def processos_ativos():

    

    listOfProcessNames = []


    for proc in psutil.process_iter():


        pInfoDict = proc.as_dict(attrs=['pid', 'name', 'cpu_percent'])


        listOfProcessNames.append(pInfoDict)


    for elem in listOfProcessNames:

        #print(elem)

        elem = str(elem)

        horizontal = 0

        vertical = 0


        for i in elem:

            text = font.render(i, 1, verde)

            horizontal += 1

            vertical += 1

            tela.blit(text,(10*vertical,25*horizontal))


不负相思意
浏览 83回答 1
1回答

BIG阳

当尝试使用计数器将列表分布在屏幕上时,它会变成一条对角线。造成这种效果的原因是您在内循环中增加了文本的垂直和水平位置。仅增加内循环中的水平位置。垂直位置必须在外循环中增加。在内部循环中,您必须迭代字典:def processos_ativos():    listOfProcessNames = [proc.as_dict(attrs=['pid', 'name', 'cpu_percent']) for proc in psutil.process_iter()]        horizontal = 0    for dictionary in listOfProcessNames:        vertical = 0        for key in dictionary:            elem = dictionary[key]            text = font.render(elem, True, verde)                        tela.blit(text,(10*vertical,25*horizontal))            vertical += 1        horizontal += 1
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python