【发布时间】:2019-05-31 11:31:02
【问题描述】:
问题
我正在使用 kivy 和 ScreenManager 做一个 GUI 并使用许多屏幕。
我有一个Screen1类,里面有一个变量,名为num,值为1。
Screen1 GUI 有一个按钮,当我按下该按钮时,它会调用一个 def calledwithbutton,他将 num 变量更改为 self.num = 2,然后将屏幕更改为 Screen 2。
Screen2 类有一个变量var,其值为Screen1().num。
Screen2 GUI 有一个标签,女巫文字是str(var)
预期的结果是 Screen2 GUI 标签文本 = '2'
但真正的结果,是 Screen 2 GUI label text = '1'
如何根据 num 变量将 Screen 2 GUI 标签文本更改为 '2'?
.py 代码
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
class Manager(ScreenManager):
pass
class Screen1(Screen):
num = 1
def calledwithbutton(self):
self.num = 2
self.parent.current = 'Screen 2'
class Screen2(Screen):
var = Screen1.num
class RootApp(App):
def build(self):
return Manager()
RootApp().run()
.kv 代码
<Manager>:
Screen1:
name: 'Screen 1'
Screen2:
name: 'Screen 2'
<Screen1>:
Button:
text: 'This is a button'
on_press: root.calledwithbutton()
<Screen2>:
Label:
text: str(root.var)
【问题讨论】:
-
示例代码请使用英文。不了解语言就很难理解代码。
-
我编辑是为了方便理解问题和代码