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

How to create a function in Kivy that is callable by two sliders? How should the arguments look like?

我正在尝试使用两个滑块的总和值更新 Kivy 中的标签。但是我可以 '弄清楚函数参数应该是什么样子。

我的 class 有两个属性 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))