为什么 Tkinter 无法识别 Attribute?

时间:2021-04-29 14:59:48

标签: python tkinter

我想根据我选择的单选按钮提供输出,并且程序按预期工作,同时忽略控制台,我在那里收到此错误消息:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.1264.0_x64__qbz5n2kfra8p0\lib\tkinter\__init__.py", line 1892, in __call__
    return self.func(*args)
  File "C:\Users\x\Code\ytinfo.py", line 16, in <lambda>
    self.radiomp3 = tk.Radiobutton(self.container, variable = self.var, value = 1, command = lambda:self.dreiodervier())
  File "C:\Users\x\Code\ytinfo.py", line 32, in dreiodervier
    self.text.insert("end", "\ntop")
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.1264.0_x64__qbz5n2kfra8p0\lib\tkinter\__init__.py", line 2354, in __getattr__
    return getattr(self.tk, attr)
AttributeError: '_tkinter.tkapp' object has no attribute 'text'

怎么会这样? 下面的源代码,并提前致谢!

import tkinter as tk

class Application(tk.Tk):

    def __init__(self, *args, **kwargs):
        
        tk.Tk.__init__(self, *args, **kwargs)
        self.container = tk.Frame(self)
        self.container.pack(fill="both", expand = True)
        self.gui()

    def gui(self):  
        
        self.var = tk.IntVar()
        
        self.radiomp3 = tk.Radiobutton(self.container, variable = self.var, value = 1, command = lambda:self.dreiodervier())
        self.radiomp3.pack()
        self.radiomp3.invoke()
        
        self.mp4 = tk.Radiobutton(self.container, variable = self.var, value = 2, command = lambda:self.dreiodervier())
        self.mp4.pack()
        
        self.text = tk.Text(self.container, borderwidth=0, highlightthickness=0, width=40)
        self.text.pack()
        
        
    def dreiodervier(self):
        
        choice = self.var.get()
        if choice == 1:
            self.text.insert("end", "\ntop")            
           
        else:
            self.text.insert("end", "\nbottom")     


app = Application()
app.mainloop()

0 个答案:

没有答案