从滑块获取值以在不同屏幕上显示(python、kivy)

从滑块获取值以在不同屏幕上显示(python、kivy),python,kivy,kivy-language,Python,Kivy,Kivy Language,我试图在不同的屏幕上显示滑块的值。我尝试过这个(下面的代码),但由于某种原因,该值似乎没有显示出来。代码运行正常,但未返回任何值。谢谢你的帮助:)干杯 温度屏 下面是一段python代码: class Thermostat(Screen): label = StringProperty() def display(self): tempVal = self.label return str(tempVal) 和kv文件: <Thermostat

我试图在不同的屏幕上显示滑块的值。我尝试过这个(下面的代码),但由于某种原因,该值似乎没有显示出来。代码运行正常,但未返回任何值。谢谢你的帮助:)干杯

温度屏

下面是一段python代码:

class Thermostat(Screen):
label = StringProperty()
    def display(self):
        tempVal = self.label 
        return str(tempVal)
和kv文件:

<Thermostat>:
name: "thermostat"
BoxLayout:
    orientation: 'horizontal'
    cols: 2

    Label:
        id: label
        font_size: "11sp"
        text: "INSIDE: " + root.display()

    Label:
        text: "More Info"
        font_size: "11sp"
:
名称:“恒温器”
盒子布局:
方向:“水平”
科尔斯:2
标签:
id:标签
字体大小:“11sp”
文本:“内部:”+root.display()
标签:
文字:“更多信息”
字体大小:“11sp”
kv文件2:这个屏幕保存来自滑块的真实值,我试图将该值传递到恒温器屏幕

<Temperature>:
BoxLayout:
    size_hint_y: None
    height: '48dp'
    cols: 3

    Label:
        text: 'THERMOSTAT'

    Slider:
        id: temp
        min: 40
        max: 100
        value: 1
        step: 1
        on_value: app.root.get_screen('thermostat').label = str('{}'.format(temp.value))    

    Label:
        id: slide_val
        text: '{}'.format(temp.value)
:
盒子布局:
尺寸提示:无
高度:“48dp”
科尔斯:3
标签:
文本:“恒温器”
滑块:
id:临时工
最低:40
最高:100
价值:1
步骤:1
on_value:app.root.get_screen('恒温器')。label=str('{}'。格式(临时值))
标签:
id:slide_val
文本:“{}”。格式(临时值)

root.display仅在程序开始时调用一次。要使其正常工作,每次更改滑块的值时都应调用
root.display

但是,使用kv languaje中的属性执行此操作非常简单:

from kivy.app import App
from kivy.uix.screenmanager import Screen, ScreenManager
from kivy.lang.builder import Builder



Builder.load_string('''

<Manager>:
    id: manager
    Thermostat:
        id: thermostat
        name: 'thermostat'
        manager: 'screen_manager'
        temp: temperature.temp                    #<<<<<<<<<<<<

    Temperature:
        id: temperature
        name: 'temperature'
        manager: 'screen_manager'


<Thermostat>:
    temp: 0                                       #<<<<<<<<<<<<
    BoxLayout:
        orientation: 'horizontal'
        cols: 3

        Label:
            id: label
            font_size: "11sp"
            text: "INSIDE: {}".format(root.temp)  #<<<<<<<<<<<<

        Label:
            text: "More Info"
            font_size: "11sp"

        Button:
            text: ">"
            on_release: app.root.current= "temperature"
            size_hint_x: None
            width: 30



<Temperature>:
    temp: temp_slider.value                              #<<<<<<<<<<<<
    BoxLayout:
        cols: 4

        Button:
            text: "<"
            on_press: app.root.current = "thermostat"
            size_hint_x: None
            width: 30

        Label:
            text: 'THERMOSTAT'

        Slider:
            id: temp_slider
            min: 40
            max: 100
            value: 40
            step: 1

        Label:
            id: slide_val
            text: str(root.temp)

''')


class Thermostat(Screen):
    pass


class Temperature(Screen):
    pass


class Manager(ScreenManager):
    pass


class ExampleApp(App):
    def build(self):
        return Manager()


if __name__ == "__main__":
    ExampleApp().run()

from kivy.properties import NumericProperty


class Temperature(Screen):
    temp = NumericProperty()
    def __init__(self, **kwargs):
        super(Temperature, self).__init__(**kwargs)