首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyGame PGU更新/重新绘制小部件

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

Stack Overflow用户
提问于 2013-06-27 21:55:45
回答 1查看 411关注 0票数 1

我正在使用菲尔的PyGame实用程序。我有一个区域需要显示变量的不断变化的滚动列表。这是一个调试窗口,当变量发生变化时,它应该显示变量的实时更新。我尝试过用几种不同的窗口小部件和几种不同的方式来做这件事,但在更新循环中更新窗口小部件时,我遇到了滚动条锁定问题。

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

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

代码语言:javascript
复制
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会重新绘制标签以显示新标签,但没有任何变化。我已经尝试了表格和列表,但我可以让它显示的唯一方法是购买完全清除列表/表,并重新添加导致滚动条和帧率问题的所有内容。

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

EN

回答 1

Stack Overflow用户

发布于 2015-03-04 08:55:52

您希望使用label.set_text更改标签上的文本。因此,以您的代码为例

代码语言:javascript
复制
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行的label类本身,这就是我如何解决这个问题的(我也在自己寻找答案)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17345165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档