添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

尽管有quit()和destroy(),但Tkinter窗口没有关闭

0 人关注

我正在运行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)
    
5 个评论
为什么你要创建两个TK的实例?
你是对的,没有必要,我在检查是否是这个问题,但增加第二个并没有解决这个问题。只有一个也没有用。
你看到控制台中的两条信息(来自 print(...) )吗?
当我删除了不必要的 Tk 的第二个实例时,你的代码完全按照我的期望工作。
@acw1668 是的,我确实看到了两个打印语句。所以代码正确地运行到了底部,没有问题。我的理解是,它只是没有设法关闭已经打开的窗口。
python
python-3.x
user-interface
tkinter
programmer12
programmer12
发布于 2019-07-31
3 个回答
Ayoub Benayache
Ayoub Benayache
发布于 2019-07-31
已采纳
0 人赞同

删除第二个实例

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)