Py学习  »  Python

python 3 tkinter checkbutton值

James • 4 年前 • 759 次点击  

嘿,伙计们,我是新来的Tkinter,我在测试东西。 在这段代码中,我得到一个错误“'graphicaluserinterface'对象没有'var'属性,我不明白,因为我的 初始化 方法。 我的代码:

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()
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/40465
 
759 次点击  
文章 [ 1 ]  |  最新文章 4 年前
Mike - SMT
Reply   •   1 楼
Mike - SMT    5 年前

问题是操作顺序。你只是在创造 self.var 在运行其他方法之后。所以当这些方法试图访问 自我价值 他们不能,因为它还没有被创造出来。

移动 self.var=IntVar() 上面 self.create_widgets() .

也就是说你需要改变 IntVar() tk.IntVar() 正如你所展示的那样 import tkinter as tk 因此,所有Tkinter小部件都需要 tk. 前缀。

做这两个更改,代码就可以正常工作了。