我正在运行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)
答案 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应用程序中单击“运行”,而是可以运行。我不确定为什么一个有效,而另一个无效,但我会接受。