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

时间:2018-01-28 08:46:58

标签: python-2.7 raspberry-pi kivy kivy-language home-automation

新手在这里尝试测试我的手上的新东西。我试图在另一个屏幕上显示一个屏幕的滑块值。我想要显示的值的屏幕中嵌入了多个屏幕。第一张照片是第一张照片。 home screen that contains multiple screens

以下是此屏幕的代码:

<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的全局变量,但它没有用。任何帮助,将不胜感激。 command screen

下面是命令屏幕的代码:

<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

1 个答案:

答案 0 :(得分:0)

from kivy.app import App

value = App.get_running_app().root.ids.SCREENCONTROLLER.get_screen('SCREENAMEHERE').ids.CHILDWIDGETID.

基本上,你会按照常规身份识别旅行,但是从正在运行的应用程序的最顶层开始,然后向下工作。

'root'这里是Apps Build Method中返回的小部件。您还没有提供该代码,所以我假设您已经返回了屏幕控制器。

进入屏幕控制器后,您可以通过输入您想要进入的屏幕的字符串名称来使用其get_screen方法,然后从他们通过ID找到它,就好像您在该屏幕上一样。