社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

python 3 tkinter checkbutton值

James • 5 年前 • 1422 次点击  

嘿,伙计们,我是新来的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
 
1422 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Mike - SMT
Reply   •   1 楼
Mike - SMT    6 年前

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

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

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

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