python - 未定义全局名称<function>

时间:2017-08-27 23:07:06

标签: python user-interface tkinter

在这种情况下,如何使用同一类中的方法?我正在尝试制作一个tkinter比例,每次更改时都会更新。我如何收集这个值?

这是代码的片段

例如,

class Humidity(Page):

   humidityValue = 0

   def __init__(self, *args, **kwargs):
      Page.__init__(self, *args, **kwargs)
      container = tk.Frame(self)
      container.pack(side="top", expand =True, fill = "both")

      humidityScale = tk.Scale(container, from_=0, to=60, tickinterval=10, width= 30,
                             orient="horizontal", borderwidth = 0, highlightthickness= 0, length=800, command=set_humidity)
      humidityLabel = tk.Label(container, text="Humidity(%)" , fg='White')
      humidityScale.pack(side="top")                            
      humidityScale.set(25)                                    #Sets humidity values to 25%
      humidityLabel.pack(side="bottom")
      humidityValue = humidityScale.get()

   def get_humidity(self):
      print self.humidityValue

   def set_humidity(val):
      humidityValue = val         

将返回错误说明:未定义全局名称'set_humidity'

1 个答案:

答案 0 :(得分:0)

当您在self.声明属性时忘记在humidityValue后面添加__init__

humidityValue = humidityScale.get()应为self.humidityValue = humidityScale.get()

这是必需的,以便在类中使用类AND函数创建的对象(如您所见)可以自引用属性。

您可能需要对__init__中的其他变量进行相同的更改(例如humidityScalehumidityLabel)。

关于您的函数set_humidity无效的原因 - 您忘记添加self作为函数的第一个参数,就像您使用get_humidity