将 kivy 属性从一个屏幕绑定到另一个屏幕



新手在这里试图测试我的新事物。我正在尝试在一个屏幕上显示另一个屏幕上的滑块值。我希望在其中显示值的屏幕中嵌入了多个屏幕。第一张图片是第一个屏幕。包含多个屏幕的主屏幕

下面是此屏幕的代码:

<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 从他们那里找到它,就像您在该屏幕上一样。

相关内容

最新更新