下午好。
文档和谷歌中的东西都找不到我问题的答案。
如何在应用程序启动后更改小部件?
例如,我有一个标签。我可以更改它的文本属性,如果我在执行 app.run() 之前这样做,更改将被应用。
但是启动应用程序后,我无法再以某种方式操作界面。
例如,我有一个由以下类定义的应用程序:
class Main(App):
def __init__(self):
super().__init__()
self.root = Label(text='', color=(1, 1, 1, 1))
def build(self):
return self.root
def msg(self, text=''):
self.root.text = text
如果我在 app.run() 之前运行 msg 方法,那么在屏幕上我会看到我作为 msg 参数传递的字符串:
if __name__ == '__main__':
app = Main()
app.msg('test')
app.run()
# вижу на экране "test"
但是如果我在 app.run() 之后运行 msg,屏幕上没有任何变化。
if __name__ == '__main__':
app = Main()
app.run()
app.msg('test')
# Экран пустой :(
您没有正确理解 Kivy 的逻辑。在 app.run() 之后,做什么根本没有意义,因为您的应用程序已经处于循环中。Kivy 中小部件的任何属性都可以在不应用任何更新功能的情况下即时更改。创建一个按钮并将事件绑定到 msg 函数。
更多信息在这里 - https://habrahabr.ru/users/HeaTTheatR/topics/