将Label绑定到python中的滑块值

时间:2017-03-22 01:23:04

标签: python-3.x kivy raspberry-pi3

我是编程新手,我在这个论坛上阅读了一些教程和相当多的问题,现在,我被困住了。

我正在尝试使用标签来说明滑块的值。我在Raspberry pi 3上使用python 3.4.2和kivy。

我根据这篇文章的代码松散地(好吧,不是那么松散):Display kivy slider value as it changes

这是我的(减轻的)代码:

def OnFanSpeedSliderValueChange(instance,value):
    FanSpeedLabel.text = str(value) 

class LayoutTest(App):
    def build(self):

       FanSpeed = Slider(min=0, max=4, step=1)

       FanSpeed.bind(value=OnFanSpeedSliderValueChange)

       FanSpeedLabel = Label(text= str(FanSpeed.value))

当我移动滑块时,应用程序崩溃,我收到此错误:

 FanSpeedLabel.text = str(value)            
 NameError: global name 'FanSpeedLabel' is not defined

我哪里出错了?任何指针都将不胜感激!

P.S。当我开始工作时,我会尝试将其转换为kivy语言...因为为什么不呢?

2 个答案:

答案 0 :(得分:1)

您将 FanSpeedLabel 声明为本地变量并尝试在 OnFanSpeedSliderValueChange

中全局使用它

开始,请 OnFanSpeedSliderValueChange 全球

FanSpeedLabel = None

def OnFanSpeedSliderValueChange(instance,value):
    global FanSpeedLabel
    FanSpeedLabel.text = str(value) 

class LayoutTest(App):
    def build(self):
       global FanSpeedLabel
       FanSpeed = Slider(min=0, max=4, step=1)

       FanSpeed.bind(value=OnFanSpeedSliderValueChange)

       FanSpeedLabel = Label(text= str(FanSpeed.value))

那说,您应该使用kv lang更好地构建代码,不要使用全局:)

答案 1 :(得分:0)

再次感谢您的回答。它让我再次阅读并发现我的错误。 Python中的Newby错误我猜...这是一个缩进的问题!我试图让我的变量本地没有成功...因为它缩进到与它应该属于的def构建(自我)变量相同的级别。

总之,这解决了我的错误,我想,回答你的建议"不使用全局":

def stars()
   puts "#{"*"}"
end  
stars()

我希望这将有助于我未来的其他新手!