我正在尝试用函数更改类中的标签。在
class Fenster2(tk.Frame):
def __init__(self, parent,controller):
tk.Frame.__init__(self,parent)
label_fluss1 = tk.Label(self, width=9)
label_fluss1.grid(row=3,column=2)
label_fluss2 = tk.Label(self, width=9)
label_fluss2.grid(row=4,column=2)
GPIO.add_event_detect(27,GPIO.RISING,callback=hochzaehlen1)
GPIO.add_event_detect(22,GPIO.RISING,callback=hochzaehlen2)
GPIO.add_event_detect(23,GPIO.FALLING,callback=interrupt)
def hochzaehlen1(callback):
global ticks1
ticks1 +=1
return ticks1
def hochzaehlen2(callback):
global ticks2
ticks2 +=1
return ticks2
def interrupt(callback):
global ticks1
global ticks2
global fluss1
fluss1=ticks1/582.0 # liter/min
fluss2=ticks2/354.0 # liter/min
ticks1=0
ticks2=0
Fenster2.label_fluss1.config(text=str(fluss1))
pb_fluss1.config(value=fluss1)
label_fluss2.config(text=str(fluss2))
pb_fluss2.config(value=fluss2)
现在,当interrupt
试图配置label_fluss1
时,它说Fenster2
没有实例label_fluss1
。有人知道怎么做吗?
我知道使用label_fluss2
和两个progressbar都会遇到相同的问题。
任何建议都将不胜感激。
你好,塞巴斯蒂安
相信在创建一个类时,需要在这些变量上使用self。这可能是导致这个问题的原因。因此,在您的初始化()中,您将拥有:
您将对init中定义的所有变量和方法执行此操作。 至于类本身,为什么要将所有方法都作为回调的子类而不存在呢?在
为了更好地理解实例变量、全局变量和局部变量,我将阅读更多关于https://docs.python.org/3/tutorial/classes.html创建类的内容。它们所在的范围对于使用非常重要。如果类是正确创建的,那么在创建对象时就没有理由不让它具有fluss1属性。但现在的情况是,您需要在这些变量之前定义self。然后从那里开始适当地构造类,以便根据需要调用这些属性。在
你缺少了对课堂工作原理的基本理解。您需要使要更新实例变量的变量,然后以相同的方式调用它:
我建议您在继续之前先找到一个关于类的基本教程,因为gui非常依赖它们。在
相关问题 更多 >
编程相关推荐