我正在使用Phil的PyGame Utilities(PGU)。我有一个区域需要显示一个变化的可滚动变量列表。这是一个调试窗口,应该在变量变化时显示变量的实时更新。我尝试使用几种不同的小部件和几种不同的方式来做这件事,但是当我在更新循环中更新小部件时,我遇到了滚动条锁定的问题。
我最初的想法是在列表中放置标签,然后更改标签并调用更新或重绘功能,但我似乎无法让它工作。为了让它工作,我完全清除了我正在使用的小部件,只是重新添加每个更新循环的所有标签。这会导致滚动条出现问题并损害我的帧速率。
以下是我认为它应该如何运作:
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()
它在列表中添加标签,然后更改标签。我认为调用重绘会重新标记标签以显示新标签,但没有任何变化。我用表格和列表尝试了这个,但是我可以让它显示的唯一方法是购买完全清除列表/表并重新添加导致滚动条和帧速率问题的所有内容。
任何帮助或想法?感谢。
答案 0 :(得分:0)
您想使用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_text时会失败,但创建标签时的对齐设置会保持不变,只要您不需要更改它就可以了。看看pgu / gui / basic.py第96-129行的标签类本身,这就是我想出来的结果(我也在寻找自己的答案)。