当出现文件选择对话框时,Tkinter GUI消失

时间:2019-06-01 14:59:00

标签: python tkinter

背景: 我正在为PDF应用程序构建GUI。此应用程序要求用户选择文件的位置并提供一些其他信息,以便可以生成封面,然后将其附加到PDF。我选择了Tkinter来为此应用程序创建GUI。我在Mac OS上进行开发。

问题: 按下表单按钮后,我可以生成一个文件选择对话框,但是,在文件选择对话框出现后,GUI会立即消失。有人知道是什么原因造成的吗?

from tkinter import *
from tkinter import filedialog

root = Tk()
Label(root, text='Submittal No. ').grid(row=0)
Label(root, text='Project Name ').grid(row=1)
Label(root, text='Product Name ').grid(row=2)
e1 = Entry(root)
e2 = Entry(root)
e3 = Entry(root)
e1.grid(row=0, column=1)
e2.grid(row=1, column=1)
e3.grid(row=2, column=1)

def fileSelector():
    root.withdraw()
    root.fileName = filedialog.askopenfilename()
    print(root.fileName)

Button(root, text='Select PDF file ', command=fileSelector).grid(row=3)

if __name__ == "__main__":
    mainloop()

2 个答案:

答案 0 :(得分:2)

GUI消失的原因是由于该语句

 root.withdraw()

删除此语句,您的GUI仍然可见。

答案 1 :(得分:2)

在fileSelector函数中,使用root.withdraw行使根窗口消失,同时保持其活动状态。

您可以删除该行,以使GUI保持可见,或者如果您要防止用户与GUI交互,直到filedialog.askopenfilename解析完毕,您可以稍后使用deiconify函数重新显示该窗口:

def fileSelector():
    global filename
    root.withdraw()
    root.fileName = filedialog.askopenfilename()
    root.deiconify()
    print(root.fileName)