Tkinter Root Window Withdraw()后消失

Tkinter Root Window Disappeared after Withdraw()

我正在编写一个程序,该程序使用文件浏览器打开文件并将其作为路径存储在变量中。我想在选择文件路径之前隐藏根 window。但是在我调用 root.withdraw() 方法后

我试过在文件路径方法之后调用 root.deiconify() 和 root.iconify() 我也试过使用 Toplevel 方法但是似乎 window 已经完全消失了从屏幕和任务栏。

root = tk.Tk()
root.winfo_toplevel()
root.withdraw()

filePath = filedialog.askopenfilename(initialdir="~/", title="Select file")

root.update()

fileSize = os.path.getsize(filePath)
print("File selected: " + filePath)
print("\nfile is: " + str(fileSize) + " bytes\n")

#.............................................................
root.deiconify()
button1 = (root, text="SHA256", command=SHA256(filePath))
button1.pack()

fileType = input("specify checksum type: " + "(ex. md5, sha1, sha256)" + "\n")

if fileType.lower() == "md5":
    message = MD5(filePath)
    print("MD5:\n" + message + "\n")
elif fileType.lower() == "sha256":
    message = SHA256(filePath)
    print("SHA256:\n" + message + "\n")
elif fileType.lower() == "sha1":
    message = SHA1(filePath)
    print("SHA1:\n" + message + "\n")

elif fileType.lower() not in hashTypes:
    print("Invalid file type \n\n")

未显示任何错误,根 window 已完全消失,无法重新显示。

这两个一起:

root.update()
root.deiconify()

是在 withdraw 调用后恢复 root 的正确方法。您可能遇到一个问题,即您的程序没有主循环 - 将一些按钮绑定到 root.destroy 并在最后调用 root.mainloop()。