背景: 我正在为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()
答案 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)