【发布时间】:2018-09-30 10:11:48
【问题描述】:
我相信我的问题是运行 change_text() 函数时,ScreenManager: 部分中的 label_text 标记没有被更新。因为它只显示原始 label_text 值,在这个案例没什么。
有人知道如何更新标签吗?我的目标是能够在 2 个 Screen 类之间传递字符串。因此,当用户在前一个屏幕上输入邮政编码之类的内容时,我可以将其传递到新屏幕。
#:kivy 1.1.3
ScreenManager:
id: screen_manager
SearchScreen:
id: search_screen
name: 'SearchScreen'
manager: screen_manager
ForecastScreen:
id: forecast_screen
name: 'ForecastScreen'
manager: screen_manager
label_text: search_screen.text
<SearchScreen>:
display: entry
FloatLayout:
TextInput:
id: entry
on_text_validate:
root.change_text()
<ForecastScreen>:
BoxLayout:
FloatLayout:
Label:
text:root.label_text
然后是py代码:
class SearchScreen(Screen):
text = StringProperty('')
def change_text(self):
self.text = "show this text"
self.manager.current = "ForecastScreen"
class ForecastScreen(Screen):
label_text = StringProperty()
Builder.load_file('weather.kv')
sm = ScreenManager()
sm.add_widget(SearchScreen(name='SearchScreen'))
sm.add_widget(ForecastScreen(name='ForecastScreen'))
class WeatherApp(App):
def build(self):
return sm
if __name__ == "__main__":
WeatherApp().run()
【问题讨论】:
标签: python python-3.x kivy kivy-language