我有这样的功能:
def ask_open_directory():
root = Tk()
# Prevent an actual interface from showing. We just want the file selection window
root.withdraw()
# Set focus on the window. This only works on MacOS
os.system('''/usr/bin/osascript -e 'tell app "Finder" to set frontmost of process "Python" to true' ''')
# Open selector
dirpath = tkinter.filedialog.askdirectory()
# Doesn't do anything
root.destroy()
return dirpath
首先选择一个输入目录,然后关闭,然后再选择输出目录。
该脚本需要几分钟的时间来完成所有数据的流失,而且用于选择输出目录的Tkinter窗口一直处于冻结状态,直到脚本完成。
E.g。我的脚本像
一样组织def massive_function():
input = custom_reader_function(input_location = ask_open_directory())
output = ask_open_directory()
lots of stuff happening
finish
我错过了什么?
答案 0 :(得分:0)
您尝试实现的目标并不比Tkinter.Tk()
实例更合理。
我的意思是,您应该从功能中删除root = Tk()
,root.withdraw()
和root.destroy()
。您应该在主程序中实例化Tkinter.Tk()
,而不是在单个函数中。