在 kivy (python) 中更新小部件

Posted

技术标签:

【中文标题】在 kivy (python) 中更新小部件【英文标题】:Updating widgets in kivy (python) 【发布时间】:2018-09-23 13:52:34 【问题描述】:

谁能向我解释一下您如何在 kivy 中更新小部件?我这里有一个代码示例:

class Game(Widget):
def __init__(self, **kwargs):
    super(Game, self).__init__(**kwargs)
    with self.canvas:
        Color(*sky_color)
        Rectangle(pos=(0, 0), size=self.size)
    with self.canvas:
        Color(*grass_color)
        Rectangle(pos=(0,0), size=(800,75))
    with self.canvas:
        Label(text='Funky Chicken', font_size='50sp', pos=(360, 400))
    with self.canvas:
        Button(text='Play', font_size='20')

class FunkyChickenApp(App):
    def build(self):
        return Game(size=Window.size)


if __name__ == "__main__":
    FunkyChickenApp().run()

这应该是一个游戏菜单,所以当你按下一些按钮时,一些标签和东西必须改变。

编辑* 我的意思是如何使用 Kivy 时钟

【问题讨论】:

所以你要使用时钟,你要不要做周期性任务? 不,如果我按下按钮,我希望更改可见。似乎 kivy 一开始只渲染一次窗口。 您希望看到哪些变化?请理解我们不在您的脑海中,除非您明确表示,否则我们不知道您想要什么。还提供minimal reproducible example,并专注于特定问题,例如说当您按下按钮时我希望发生这种情况。你的问题不清楚。另请阅读How to Ask 【参考方案1】:

您需要将操作绑定到按钮(文档中有几个示例https://kivy.org/docs/api-kivy.uix.button.html)。

button = Button(text='Play', font_size='20')
button.bind(on_press = do_something_you_want)

【讨论】:

是的,当然,但是要使任何动作可见,您需要某种 fps 还是我错了? @Heimdonger fps?你的意思是每秒帧数吗? @eyllanesc 是的,我听说过一些关于 kivy 时钟的事情

以上是关于在 kivy (python) 中更新小部件的主要内容,如果未能解决你的问题,请参考以下文章

运行代码时更新 kivy 小部件的属性

kivy python 小部件实例或所有小部件

如何在带有python类的kivy中使用下拉小部件

在没有终端的情况下打开 kivy 小部件?

用python读/写kivy小部件属性

Python 中 Kivy 小部件之间的交互