为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

不负相思意 2023-07-27 16:45:05
因此,我正在尝试构建一个应用程序,使用 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))
查看完整描述

1 回答

?
BIG阳

TA贡献1859条经验 获得超6个赞

当尝试使用计数器将列表分布在屏幕上时,它会变成一条对角线。


造成这种效果的原因是您在内循环中增加了文本的垂直和水平位置。仅增加内循环中的水平位置。垂直位置必须在外循环中增加。在内部循环中,您必须迭代字典:


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


查看完整回答
反对 回复 2023-07-27
  • 1 回答
  • 0 关注
  • 82 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信