新手在这里试图测试我的新事物。我正在尝试在一个屏幕上显示另一个屏幕上的滑块值。我希望在其中显示值的屏幕中嵌入了多个屏幕。第一张图片是第一个屏幕。包含多个屏幕的主屏幕
下面是此屏幕的代码:
<Thermostat>:
BoxLayout:
orientation: 'horizontal'
cols: 2
Label:
id: Thmo
font_size: "11sp"
text: "INSIDE: 50"
Label:
text: "More Info"
font_size: "11sp"
<Weather>:
BoxLayout:
orientation: 'horizontal'
cols: 2
Label:
id:Temp
text: "OUT TEMP: "+ root.checkWeather()
font_size: "11sp"
Label:
id: Locale
text: root.locale
font_size: "11sp"
下一个屏幕是命令屏幕,如下所示,我希望此屏幕的滑块值在主屏幕中更新。我尝试使用名为 TEMP 的全局变量,但它不起作用。任何帮助将不胜感激。命令屏幕
下面是命令屏幕的代码:
<Temperature>:
BoxLayout:
cols: 3
Label:
text: 'THERMOSTAT'
Slider:
id: temp_slider
min: 40
max: 100
value: 40
step: 1
on_value: app.TEMP = str(temp_slider.value)
Label:
id: value
text: str(temp_slider.value)
<Vent>:
BoxLayout:
size_hint_y: None
height: '48dp'
cols: 3
Label:
text: 'VENT'
Button:
id: state
text: 'Open'
on_press: root.Open(state)
Label:
id: cmdErr
from kivy.app import App
value = App.get_running_app().root.ids.SCREENCONTROLLER.get_screen('SCREENAMEHERE').ids.CHILDWIDGETID.
基本上,您进行通常的ID旅行,但您从正在运行的应用程序的最顶部开始向下工作。
这里的"root"是在应用程序构建方法中返回的小部件。您尚未提供该代码,因此我假设您返回了屏幕控制器。
进入屏幕控制器后,您可以通过输入您为要转到的屏幕提供的字符串名称来使用它的get_screen方法,然后通过 id 从他们那里找到它,就像您在该屏幕上一样。