Tkinter - 选择文件后自动关闭顶层 window
Tkinter - Closing automatically a top level window after file is selected
我在工作中开发了一个代码,我想让它对用户更友好一些,以便与我的团队分享。此代码需要知道文件的具体位置,并且代码要在与运行相同的文件夹中。长话短说,我想添加打开对话框 window 的选项,这样他们就可以 select 来自任何目录的文件。我尝试了下面的代码,因为我想要这样,在文件 selected 和 returns 它的位置之后,Tkinter top window 自动关闭而不需要使用按钮所以我的团队可以继续流程中的下一步。
问题是它打开了三个 Tkinter windows,并且在文件 selected 之后它们都保持打开状态。
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()
除了上述问题之外,当我尝试关闭那些持久存在的 windows 时,它会关闭 Python。
到目前为止,我发现的解决方案都添加了一个按钮,我尽可能避免这样做。
创建一个函数,并在最后调用 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()
综合解决方案:
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()
我在工作中开发了一个代码,我想让它对用户更友好一些,以便与我的团队分享。此代码需要知道文件的具体位置,并且代码要在与运行相同的文件夹中。长话短说,我想添加打开对话框 window 的选项,这样他们就可以 select 来自任何目录的文件。我尝试了下面的代码,因为我想要这样,在文件 selected 和 returns 它的位置之后,Tkinter top window 自动关闭而不需要使用按钮所以我的团队可以继续流程中的下一步。
问题是它打开了三个 Tkinter windows,并且在文件 selected 之后它们都保持打开状态。
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()
除了上述问题之外,当我尝试关闭那些持久存在的 windows 时,它会关闭 Python。
到目前为止,我发现的解决方案都添加了一个按钮,我尽可能避免这样做。
创建一个函数,并在最后调用 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()
综合解决方案:
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()