大家好,我是tkinter的新手,我正在测试东西。 在这段代码中,我收到了我无法理解的错误“'Graphicaluserinterface'对象没有属性'var'”,因为我在 init 方法中有了它。 我的代码:
import tkinter as tk
class Graphicaluserinterface(tk.Frame):
def __init__(self,master=None):
super().__init__(master)
self.grid()
self.create_widgets()
self.startbuttonfunktion()
self.checkbutton1
self.var=IntVar()
def create_widgets(self):
self.programmstart = tk.Button(self, text = "Programmstart")
self.programmstart.grid(row=0,column=1)
self.programmstart["command"]=self.startbuttonfunktion
self.programmschliessen = tk.Button(self, text ="Exit Programm",command=root.destroy)
self.programmschliessen.grid(row=1,column=2)
self.checkbutton1 = tk.Checkbutton(self, text = "Sensoren1",variable=self.var,onvalue=1,offvalue=0)
self.checkbutton1.grid(row=1,column=0)
def startbuttonfunktion(self):
if self.var.get()==1:
print("Der Checkbutton wurde geklickt")
else:
print("Der Checkbutton wurde NICHT geklickt")
root = tk.Tk()
app = Graphicaluserinterface(master=root)
app.master.title("TestProgramm")
app.master.maxsize(1200,600)
app.mainloop()
答案 0 :(得分:2)
问题在于操作顺序。您仅在运行其他方法之后才创建self.var
IntVar。因此,当这些方法尝试访问self.var
时,由于它们尚未创建而无法访问。
将self.var=IntVar()
移到self.create_widgets()
上方。
也就是说,您还需要将IntVar()
更改为tk.IntVar()
,就像已经证明自己正在做import tkinter as tk
一样,因此所有tkinter小部件都需要一个tk.
前缀。>
进行这两项更改,您的代码将可以正常工作。