Mar-03-2024, 03:20 AM
Hello! I'm using tkinter, customtkinter (ctk), and CTkScrollableDropdown (ctksd). This last library adds the ability to easily implement scrollable dropdown menus to various ctk elements. I followed ctksd's installation instructions, imported the library, and called the CTkScrollableDropdown class after my ctk element like in their example. However, I'm getting this error after I delete the widget. The error keeps spamming with every interaction with the GUI thereafter.
I suspect this might have to do with the fact that no parent is passed to CTkScrollableDropdown. Any ideas? Is there a safer method for deleting a widget that doesn't lead to this error?
Error:Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\walde\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 1921, in __call__
return self.func(*args)
File "C:\Users\walde\Desktop\Benjamin\Engineering\Contracts\20240202_client management software\src\v1\CTkScrollableDropdown\ctk_scrollable_dropdown.py", line 51, in <lambda>
self.attach.winfo_toplevel().bind("<ButtonPress>", lambda e: self._withdraw() if not self.disable else None, add="+")
File "C:\Users\walde\Desktop\Benjamin\Engineering\Contracts\20240202_client management software\src\v1\CTkScrollableDropdown\ctk_scrollable_dropdown.py", line 140, in _withdraw
if self.winfo_viewable() and self.hide:
File "C:\Users\walde\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 1267, in winfo_viewable
self.tk.call('winfo', 'viewable', self._w))
_tkinter.TclError: bad window path name ".!ctkscrollabledropdown"
MRE:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import tkinter as tk import customtkinter as ctk import CTkScrollableDropdown as ctksd def clear_screen_widgets(): # deletes all present widgets widgets = root.winfo_children() # Get a list of all the widgets in root for widget in widgets: widget.destroy() def goto_screen_client_info_2(values): clear_screen_widgets() root = ctk.CTk() combobox_client_info_1 = ctk.CTkComboBox(master = root, values = 'foo' ) combobox_client_info_1.place(relx = 0.5 , rely = 0.33 , relwidth = . 4 , anchor = tk.CENTER) combobox_client_info_1.bind( "<Return>" , goto_screen_client_info_2) # run command when enter key is pressed ctksd.CTkScrollableDropdown(combobox_client_info_1, values = 'foo' , justify = "left" , button_color = "transparent" , autocomplete = True ) root.mainloop() |