我是编程新手,我在这个论坛上阅读了一些教程和相当多的问题,现在,我被困住了。
我正在尝试使用标签来说明滑块的值。我在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语言...因为为什么不呢?
答案 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()
我希望这将有助于我未来的其他新手!