Python 3 Значение Tkinter Checkbutton - PullRequest
       9

Python 3 Значение Tkinter Checkbutton

0 голосов
/ 30 октября 2018

Привет, ребята, я новичок в 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()

1 Ответ

0 голосов
/ 30 октября 2018

Проблема в порядке работы. Вы создаете self.var IntVar только после запуска других методов. Поэтому, когда эти методы пытаются получить доступ к self.var, они не могут, потому что он еще не создан.

Перемещение self.var=IntVar() Выше self.create_widgets().

При этом вам также нужно изменить IntVar() на tk.IntVar(), как вы уже показали, что делаете import tkinter as tk, и, следовательно, для всех виджетов tkinter потребуется префикс tk..

Сделайте эти 2 изменения, и ваш код будет работать нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...