Я бьюсь уже около 2 часов знаю .. Я не вижу, что не так с кодом.Но это дает мне эту ошибку.
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\82104\Anaconda3\lib\tkinter\__init__.py", line 1705, in __call__
return self.func(*args)
File "C:\Users\82104\PycharmProjects\Macro\GUI.py", line 365, in on_entry_trace
self.co_button['state']=new_state
AttributeError: 'Description' object has no attribute 'co_button'
Я понятия не имею, что означает первая ошибка в строке 1705, но по второй ошибке я вижу, что моя функция on_entry_trace
не может найти self.co_button
.Однако я не могу найти, почему это не может.Я обнаружил, что у многих людей была эта проблема, потому что они писали как
button = ttk.Button(something).grid(something)
вместо
button = ttk.Button(something)
button.grid(something)
, но это не мой случай.
Это класс IУ меня проблемы с.
class Description(tk.Toplevel):
def __init__(self, master=None):
super(Description, self).__init__(master=master)
self.title('Description')
self.grab_set()
self.geometry('206x100')
self.resizable(False, False)
self.label_ds = ttk.Label(self, text='Enter Text').grid(column=0, row=0, pady=(12, 4))
self.description = tk.StringVar()
entry_ds = ttk.Entry(self, width=25, textvariable=self.description)
entry_ds.grid(column=0, row=1, padx=13, pady=(0, 4))
entry_ds.focus()
self.description.trace('w', self.on_entry_trace)
self.description.set("")
self.co_button = ttk.Button(self, text='Confirm', command=self.on_press_ds)
self.co_button.grid(column=0, row=2, pady=4)
self.protocol("WM_DELETE_WINDOW", self.destroy_ds)
self.wait_visibility()
hide_minimize_maximize(self)
def on_entry_trace(self, *args):
new_state = "disabled" if self.description.get() == "" else "normal"
self.co_button.configure(state=new_state)
def on_press_ds(self):
description = self.description.get()
if description:
self.master.listbox.insert('end', '-- ' + description + ' --')
self.destroy_ds()
self.destroy()
def destroy_ds(self):
self.master.ds_button['state'] = 'normal'
self.destroy()