Tkinter根窗口在Withdraw()之后消失

时间:2019-06-26 19:41:54

标签: python tkinter window

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

我尝试在文件路径方法之后调用root.deiconify(),还尝试使用Toplevel方法调用root.iconify(),但是似乎窗口已从屏幕和任务栏完全消失。

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")

没有显示错误,根窗口只是消失了,无法重新调用。

1 个答案:

答案 0 :(得分:0)

这两个在一起:

root.update()
root.deiconify()

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