关闭文件对话框后Tkinter窗口未关闭

SSS*_*SSS 3 python tkinter python-3.x

我想在选择文件后关闭"文件打开"对话框.目前使用我的代码,我可以选择一个文件,但文件打开对话框保持打开状态,直到我单击"X".选择文件后,如何关闭此窗口.

这是我的代码:

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)
Run Code Online (Sandbox Code Playgroud)

iCo*_*dez 7

文件对话框被关闭就好了.我想您要说的是,从对话框中选择文件后,您创建的用于按住按钮的Tkinter窗口没有关闭.要做到这一点,您需要重新调整程序.

首先,您需要显式创建一个Tk窗口来按住按钮:

root = Tk()
Run Code Online (Sandbox Code Playgroud)

然后,您应该将此窗口列为按钮的父级:

Button(root, text='File Open', command = openFile).pack(fill=X)
#      ^^^^
Run Code Online (Sandbox Code Playgroud)

最后,你应该在最后调用窗口的destroy方法:rootopenFile

root.destroy()
Run Code Online (Sandbox Code Playgroud)

这将导致窗口关闭,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)
Run Code Online (Sandbox Code Playgroud)