Tkinter-选择文件后自动关闭顶层窗口

问题描述 投票:0回答:2

我在工作中开发了一个代码,希望使它对用户更加友好,以便与我的团队共享。此代码要求知道文件的特定位置,并且代码要在同一文件夹中运行。长话短说,我想添加一个选项来打开对话框,以便他们可以从任何目录中选择文件。我尝试了下面的代码,因为我想要这样,在选择文件并返回其位置后,Tkinter顶部窗口会自动关闭,而无需使用按钮,因此我的团队可以继续进行下一步。

问题是,它打开了三个Tkinter窗口,并且在选择文件后它们都保持打开状态。

from tkinter import *
from tkinter import filedialog

top = Toplevel()
root = Tk()
root.fileName = filedialog.askopenfilename(filetypes = (("data migration","*.xlsx"),("data migration","*.csv")))
top.destroy()
top.update()

除了上述问题,当我尝试关闭这些持久窗口时,它还会关闭Python。

到目前为止,我发现所有解决方案都添加了一个按钮,如果可能的话,我会尽量避免这样做。

python tkinter dialog jupyter openfiledialog
2个回答
0
投票

改为制作一个函数,并在最后调用函数top.destroy()

from tkinter import *
from tkinter import filedialog

root = Tk()

top = Toplevel()

def func():
    fileName = filedialog.askopenfilename(filetypes = (("data migration","*.xlsx"),("data migration","*.csv")))
    #do whatever you need to do with your filename
    print (fileName)
    top.destroy()

func()

root.mainloop()

0
投票

组合解决方案:

from tkinter import *
from tkinter import filedialog

root = Tk()

top = Toplevel()

def func():
    fileName = filedialog.askopenfilename(filetypes = (("data migration","*.xlsx"),("data migration 2","*.csv")))
    #do whatever you need to do with your filename
    print (fileName)
    top.destroy()

def quit():
    root.destroy()    

func()
quit()

root.mainloop()
© www.soinside.com 2019 - 2024. All rights reserved.