如何在Kivy中创建一个可由两个滑块调用的函数?争论应该是什么样子



我正在尝试更新Kivy中的一个标签,将两个滑块的值相加。但我可以不知道函数参数应该是什么样子。

我的类有两个属性self.temp1self.temp2,还有两个滑块,它们是这样创建的:

self.slider1 = Slider(min=-20, max=60, step=0.1, value = self.temp1)
self.slider2 = Slider(min=-20, max=60, step=0.1, value = self.temp2)
self.slider1.bind(value = self.update_temperature1)
self.slider2.bind(value = self.update_temperature2)

我想用update_temperature函数更新一个标签。我通过使用两个函数为每个滑块找到了一个解决方案。

def update_temperature1(self, instance, t1):
self.temp1 = t1
self.label1.text = str("%3.1F" % (t1 + self.temp2))
def update_temperature2(self, instance, t2):
self.temp2 = t2
self.label1.text = str("%3.1F" % (t2 + self.temp1))

我想创建一个单独的函数,但当我尝试这样的东西时,slider.bind会出错:

self.slider1.bind(value = self.update_temperature)
self.slider2.bind(value = self.update_temperature)
def update_temperature(self, instance, t1, t2):
self.temp1 = t1
self.temp2 = t2
self.label1.text = str("%3.1F" % (self.temp1 + self.temp2))

我该怎么做?有更好的方法吗?

谢谢!

您好。在update_temperature回调中,是否插入了t1和t2的参数?如果你不能,我建议你重新安排数据流。

temp1 = -20 #default
temp2 = -20 #default
self.slider1 = Slider(min=-20, max=60, step=0.1, value = self.temp1)
self.slider2 = Slider(min=-20, max=60, step=0.1, value = self.temp2)
self.slider1.bind(value = self.update_temperature)
self.slider2.bind(value = self.update_temperature)
....
def update_temperature(self, instance, temp):
#update temperature accordingly
if instance is self.slider1:
self.temp1 = temp
elif instance is self.slider2:
self.temp2 = temp
#update label text
self.label1.text = str("%3.1F" % (self.temp1 + self.temp2))

最新更新