我有一個有兩個屏幕的小型kivy應用程序。我想從第一如何更新第二個kivy屏幕上的標籤文本
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.properties import StringProperty
# Declare both screens
class MainScreen(Screen):
def SetText(self):
text='Total='+str(17*21)
StrategyScreen().SetText(text)
class StrategyScreen(Screen):
labelText = StringProperty()
labelText='My label'
print 'start'
def SetText(self, text):
print 'a', self.labelText
self.labelText=text
print 'b', self.labelText
class TestApp(App):
def build(self):
# Create the screen manager
screenManager = ScreenManager()
screenManager.add_widget(MainScreen(name='main'))
screenManager.add_widget(StrategyScreen(name='strategy'))
return screenManager
if __name__ == '__main__':
TestApp().run()
更新第二標籤與KV文件:
<MainScreen>:
BoxLayout:
orientation: "vertical"
Button:
text: 'Goto strategy'
on_press: root.manager.current = 'strategy'
Button:
text: 'Set text'
on_press: root.SetText()
<StrategyScreen>:
BoxLayout:
orientation: "vertical"
Label:
text: root.labelText
Button:
text: 'Back to menu'
on_press: root.manager.current = 'main'
從上看「開始」,只有一個StrategyScreen的實例和的setText的調用是否正確,但標籤仍然顯示舊文本。
任何人都可以請幫
我想我在這裏誤解OOP。 StrategyScreen類沒有__init__,它如何知道'self'是什麼?我很困惑 – Psionman