gpt4 book ai didi

python - Tkinter 在 python 3.6 : TclError: NULL main Window 中给出以下错误

转载 作者:行者123 更新时间:2023-11-28 18:05:53 28 4
gpt4 key购买 nike

我正在编写一个执行以下序列的 python 程序:
1. 对话框打开/选择目录
2.执行某些操作
3. 使用 tkinter 对话框重命名文件
4. 执行其余操作

我写了下面的代码:

def open_directory():
directory_name = filedialog.askdirectory(title='Ordner Auswählen',parent=root)
print(directory_name)
root.destroy()

def input_name():
def callback():
print(e.get())
root.quit()
e = ttk.Entry(root)
NORM_FONT = ("Helvetica", 10)
label = ttk.Label(root,text='Enter the name of the ROI', font=NORM_FONT)
label.pack(side="top", fill="x", pady=10)
e.pack(side = 'top',padx = 10, pady = 10)
e.focus_set()
b = ttk.Button(root, text = "OK", width = 10, command = callback)
b.pack()

def close_window():
root.destory()

root = tk.Tk()
root.withdraw()
open_directory() #dialogue box to select directory
<perform certain operations>
input_name() #dialgue box for user input file name
root.mainloop()
close_window() #exit the mainloop of tkinter
<perform rest of the functions>

但我收到以下错误Tclerror: NULL 主窗口我认为将 root 声明为主窗口是真实的,但我似乎没有找到我在哪里犯了错误。对于我在这里尝试做的事情,还有其他更好的方法吗?

最佳答案

正如@CommonSense 提到的,当您使用 withdraw 隐藏主窗口时,您需要使用方法 deiconify 再次使用 root。因此,更改函数 change_directory 如下:

def open_directory():
directory_name = filedialog.askdirectory(title='Ordner Auswählen',parent=root)
print(directory_name)
root.deiconify()

如果不去图标化窗口,则无法调用使用根窗口的函数 input_name

我已经测试了这段代码并且它有效。

PS:您在函数 close_window 中也有错字(当销毁窗口时)。

关于python - Tkinter 在 python 3.6 : TclError: NULL main Window 中给出以下错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53501056/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com