尽管quit()和destroy(),Tkinter窗口仍未关闭

时间:2019-07-31 01:35:22

标签: python python-3.x user-interface tkinter

我正在运行Tkinter以使用函数filedialog.askopenfilename()获取文件路径。该程序正确获取了文件路径,但是一旦我在所需文件上单击“打开”,代码destroy()就不会破坏打开的GUI窗口。

我已经尝试了destroy()和quit()函数,尽管我读到首选destroy()。我读到如果我执行root.destroy(),它应该破坏打开的GUI。发生的情况是,在用户选择文件后,单击打开,然后查找程序窗口完全变灰且无响应。我猜这是我们可以执行销毁的地步,但这对我不起作用。

我真的不确定我要去哪里。确实要删除Tkinter浏览器。尽管浏览器处于打开状态,我的代码仍会继续执行,但这并不专业。

import tkinter
from tkinter import filedialog
import os

root = tkinter.Tk()
root.withdraw() #use to hide tkinter window

def search_for_file_path ():
    currdir = os.getcwd()
    tempdir = filedialog.askopenfilename(parent=root, initialdir=currdir, title='Please select a directory')
    if len(tempdir) > 0:
        print ("You chose: %s" % tempdir)
    return tempdir


file_path_variable = search_for_file_path()
root = tkinter.Tk()
root.destroy()
print ("\nfile_path_variable = ", file_path_variable)

3 个答案:

答案 0 :(得分:2)

删除第二个实例

import tkinter
from tkinter import filedialog
import os

root = tkinter.Tk()
root.withdraw() #use to hide tkinter window

def search_for_file_path ():
    currdir = os.getcwd()
    tempdir = filedialog.askopenfilename(parent=root, initialdir=currdir, title='Please select a directory')
    if len(tempdir) > 0:
        print ("You chose: %s" % tempdir)
    return tempdir


file_path_variable = search_for_file_path()
# remove the second instance
root.destroy()
print ("\nfile_path_variable = ", file_path_variable)

答案 1 :(得分:0)

如果是我,那么我将使用root.mainloop(),然后使用root.destroy()。还有其他方法,但我不确定它们是否有效。

答案 2 :(得分:0)

似乎已解决问题!当我从终端执行脚本时,它无需在python应用程序中单击“运行”,而是可以运行。我不确定为什么一个有效,而另一个无效,但我会接受。