Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyGame PGU更新/重新绘制小部件_Python_User Interface_Pygame_Pgu - Fatal编程技术网

Python PyGame PGU更新/重新绘制小部件

Python PyGame PGU更新/重新绘制小部件,python,user-interface,pygame,pgu,Python,User Interface,Pygame,Pgu,我正在使用Phil的PyGame实用程序(PGU)。我有一个区域需要显示一个不断变化的可滚动变量列表。这是一个调试窗口,应该在变量更改时显示实时更新。我尝试过用几种不同的小部件和几种不同的方法来实现这一点,但是当我在更新循环中更新小部件时,滚动条出现了锁定问题 我最初的想法是在列表中放置标签,然后更改标签并调用update或repait函数,但我似乎无法让它正常工作。为了让它工作,我完全清除了我正在使用的小部件,只是在每个更新循环中重新添加了所有标签。这会导致滚动条出现问题,并影响我的帧速率 以

我正在使用Phil的PyGame实用程序(PGU)。我有一个区域需要显示一个不断变化的可滚动变量列表。这是一个调试窗口,应该在变量更改时显示实时更新。我尝试过用几种不同的小部件和几种不同的方法来实现这一点,但是当我在更新循环中更新小部件时,滚动条出现了锁定问题

我最初的想法是在列表中放置标签,然后更改标签并调用update或repait函数,但我似乎无法让它正常工作。为了让它工作,我完全清除了我正在使用的小部件,只是在每个更新循环中重新添加了所有标签。这会导致滚动条出现问题,并影响我的帧速率

以下是我认为它应该如何工作:

self.l = gui.List(width = self.config['uiwidth']-10, height = self.config['height']-230)
self.add(self.l, 5, 255)

self.label = gui.Label("UNCHANGED",align=-1)

    if self.firstTimeSelectingBot == True:
        for i in range(len(dbot.customDebugVariableList)):
            self.l.add(self.label, value = i)
        self.firstTimeSelectingBot = False
    self.label = gui.Label("CHANGED",align=-1)
    self.label.repaint()
它向列表中添加标签,然后更改标签。我以为调用repaint会重新绘制标签以显示新标签,但没有任何变化。我在表格和列表中尝试过这个方法,但我能让它显示出来的唯一方法是完全清除列表/表格,并重新添加导致滚动条和帧速率问题的所有内容


有什么帮助或想法吗?谢谢。

您想使用label.set_text更改标签上的文本。以您的代码为例

self.l = gui.List(width = self.config['uiwidth']-10, height = self.config['height']-230)
self.add(self.l, 5, 255)

self.label = gui.Label("UNCHANGED",align=-1)

    if self.firstTimeSelectingBot == True:
        for i in range(len(dbot.customDebugVariableList)):
            self.l.add(self.label, value = i)
        self.firstTimeSelectingBot = False
    self.label.set_text("CHANGED")

但是,您会注意到对齐已被删除。Label.set_文本在放入时失败,但是创建标签时的对齐集将保持不变,只要您不需要更改该设置即可。看看标签类本身的pgu/gui/basic.py第96-129行,这就是我如何解决这个问题的(我自己也在寻找答案)。

pgu的文档相当模糊,但我认为您应该研究小部件对象中内置的“下一个”函数。这可能就是你要找的。