从滑块获取值以在不同屏幕上显示(python、kivy)
我试图在不同的屏幕上显示滑块的值。我尝试过这个(下面的代码),但由于某种原因,该值似乎没有显示出来。代码运行正常,但未返回任何值。谢谢你的帮助:)干杯 温度屏 下面是一段python代码:从滑块获取值以在不同屏幕上显示(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
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)