Tkinter window 关闭文件对话框后不关闭
Tkinter window not closing after closed file dialog
我想在 select 下载文件后关闭“文件打开”对话框。目前使用我的代码,我可以 select 一个文件,但“文件打开”对话框保持打开状态,直到我单击 'X'。在我 select 编辑了一个文件后,如何关闭这个 window。
这是我的代码:
import sys
from tkinter import *
from tkinter.filedialog import askopenfilename
fname = "unassigned"
def openFile():
global fname
fname = askopenfilename()
if __name__ == '__main__':
b = Button(text='File Open', command = openFile).pack(fill=X)
mainloop()
print (fname)
文件对话框正在正常关闭。我想你想说的是你创建的用于按住按钮的 Tkinter window 在你从对话框中 select 一个文件后没有关闭。要让它执行此操作,您需要对程序进行一些重构。
首先,您需要显式创建一个 Tk
window 来按住按钮:
root = Tk()
然后您应该将此 window 列为按钮的父级:
Button(root, text='File Open', command = openFile).pack(fill=X)
# ^^^^
最后应该在openFile
的末尾调用root
window的destroy
方法:
root.destroy()
这将导致 window 关闭并退出 Tkinter 主循环。
总而言之,您的脚本将如下所示:
import sys
from tkinter import *
from tkinter.filedialog import askopenfilename
fname = "unassigned"
def openFile():
global fname
fname = askopenfilename()
root.destroy()
if __name__ == '__main__':
root = Tk()
Button(root, text='File Open', command = openFile).pack(fill=X)
mainloop()
print (fname)
我想在 select 下载文件后关闭“文件打开”对话框。目前使用我的代码,我可以 select 一个文件,但“文件打开”对话框保持打开状态,直到我单击 'X'。在我 select 编辑了一个文件后,如何关闭这个 window。
这是我的代码:
import sys
from tkinter import *
from tkinter.filedialog import askopenfilename
fname = "unassigned"
def openFile():
global fname
fname = askopenfilename()
if __name__ == '__main__':
b = Button(text='File Open', command = openFile).pack(fill=X)
mainloop()
print (fname)
文件对话框正在正常关闭。我想你想说的是你创建的用于按住按钮的 Tkinter window 在你从对话框中 select 一个文件后没有关闭。要让它执行此操作,您需要对程序进行一些重构。
首先,您需要显式创建一个 Tk
window 来按住按钮:
root = Tk()
然后您应该将此 window 列为按钮的父级:
Button(root, text='File Open', command = openFile).pack(fill=X)
# ^^^^
最后应该在openFile
的末尾调用root
window的destroy
方法:
root.destroy()
这将导致 window 关闭并退出 Tkinter 主循环。
总而言之,您的脚本将如下所示:
import sys
from tkinter import *
from tkinter.filedialog import askopenfilename
fname = "unassigned"
def openFile():
global fname
fname = askopenfilename()
root.destroy()
if __name__ == '__main__':
root = Tk()
Button(root, text='File Open', command = openFile).pack(fill=X)
mainloop()
print (fname)