Python Forum
[Tkinter] (CLOSED) CTkScrollableDropdown error: bad window path name ".!ctkscrollabledropdown" - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: GUI (https://python-forum.io/forum-10.html)
+--- Thread: [Tkinter] (CLOSED) CTkScrollableDropdown error: bad window path name ".!ctkscrollabledropdown" (/thread-41684.html)



(CLOSED) CTkScrollableDropdown error: bad window path name ".!ctkscrollabledropdown" - CopperGenie - Feb-29-2024

(POST CLOSED)

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 it with clear_screen_widgets(). And the error keeps spamming with every interaction with the GUI thereafter.

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 50, in <lambda> self.attach.winfo_toplevel().bind('<Configure>', 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"
Here is my ctk combobox with subsequent ctksd class:
import customtkinter as ctk
import CTkScrollableDropdown as ctksd

root = ctk.CTk()

combobox_client_info_1 = ctk.CTkComboBox(master=root, values=client_name_list)
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=client_name_list, justify="left", button_color="transparent", autocomplete=True)

root.mainloop()
I've seen this type of error when the parent/master widget can't be found, but I'm not sure if that's applicable here or how to resolve it. Does anyone have any ideas?


RE: CTkScrollableDropdown error: bad window path name ".!ctkscrollabledropdown" - deanhystad - Feb-29-2024

There is an error in your posted code. You need to call CTk() before making your combo box. First off, you need to do this to assign a value to root before you use root here:
combobox_client_info_1 = ctk.CTkComboBox(master=root, values=client_name_list)
Perhaps more importantly, you need to call CTk() before creating any widgets because CTk() not only creates your first top level window, it also initializes the toolkit so you can start making windows, labels, buttons and combo boxes.


RE: CTkScrollableDropdown error: bad window path name ".!ctkscrollabledropdown" - CopperGenie - Feb-29-2024

(Feb-29-2024, 10:41 PM)deanhystad Wrote: You need to call CTk() before making your comb box.

Sorry, I do use "root = ctk.CTk()" before creating the widgets. The widget creation is done by a function in my full script, which is why I had it outside. I'll edit that. So I don't think that's causing the error.


RE: CTkScrollableDropdown error: bad window path name ".!ctkscrollabledropdown" - deanhystad - Feb-29-2024

You need to post your real code. I don't want to guess what's causing the error.


RE: CTkScrollableDropdown error: bad window path name ".!ctkscrollabledropdown" - CopperGenie - Mar-03-2024

(Feb-29-2024, 11:12 PM)deanhystad Wrote: You need to post your real code. I don't want to guess what's causing the error.

My mistake, I've started a new post with a minimum reproducible example. I figured that'd be cleaner than fixing it here.