首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tkinter -选择文件后自动关闭顶层窗口

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

Stack Overflow用户
提问于 2019-09-27 12:22:20
回答 2查看 540关注 0票数 0

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

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

代码语言:javascript
复制
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。

到目前为止,我找到的解决方案都添加了一个按钮,这是我尽可能避免的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-27 12:57:15

改为创建一个函数,并让您的函数在最后调用top.destroy():

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2019-09-28 10:48:11

组合解决方案:

代码语言:javascript
复制
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()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58127848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档