0

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

以下是此屏幕的代码:

<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
4

1 回答 1

0
from kivy.app import App

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

基本上,你做你通常的身份旅行,但你从正在运行的应用程序的最顶部开始,然后向下工作。

这里的“root”是应用程序构建方法中返回的小部件。您还没有提供该代码,所以我假设您返回了屏幕控制器。

进入屏幕控制器后,您可以使用它的 get_screen 方法,方法是输入您为要转到的屏幕提供的字符串名称,然后从它们中通过 ids 找到它,就像您在该屏幕上一样。

于 2018-01-28T21:11:44.070 回答