【发布时间】:2015-06-26 18:10:22
【问题描述】:
不确定这是否是我对 tkinter 或 OOP(可能两者兼有)缺乏了解,但以下代码不起作用。我在我的 tkinter 项目中隔离了这个问题,我将其转换为 OOP 范式并缩小了范围,但我不知道如何调试它。我知道我可以通过创建一些自定义函数或解决方法来避免 StringVar(),但我想坚持使用它,因为 imo 它更优雅。
完整的、独立的代码:
import tkinter as tk
class App(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
var = tk.StringVar()
label = tk.Label(self, textvariable=var)
label.pack()
button = tk.Button(self, text='go', command=lambda: self.var_setter())
button.pack()
def var_setter(self):
self.var.set('Hello')
appobject = App()
appobject.mainloop()
按下按钮时会报错
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python34\lib\tkinter\__init__.py", line 1533, in __call__
return self.func(*args)
File "C:/Users/me/PycharmProjects/Ed/sandbox.py", line 13, in <lambda>
button = tk.Button(self, text='go', command=lambda: self.var_setter())
File "C:/Users/me/PycharmProjects/Ed/sandbox.py", line 17, in var_setter
self.var.set('Hello')
File "C:\Python34\lib\tkinter\__init__.py", line 1932, in __getattr__
return getattr(self.tk, attr)
AttributeError: 'tkapp' object has no attribute 'var'
我试过了
self.var = tk.StringVar()
以及其他围绕“自我”移动的方式。
我不得不承认,我怀疑
tk.Tk.__init__(self)
我从sentdex tutorials on tkinter 中获取的。
【问题讨论】:
标签: python oop python-3.x tkinter