在 python 的默认编辑器 IDLE 中,可以同时打开多个“打开”对话框。
我正在查看他们的来源,但我找不到可以复制这种行为的地方。从他们IOBinding.py
的:
from tkinter import filedialog as TkFileDialog
...
class IOBinding:
...
def askopenfile(self):
dir, base = self.defaultfilename("open")
if not self.opendialog:
self.opendialog = tkFileDialog.Open(master=self.text,
filetypes=self.filetypes)
filename = self.opendialog.show(initialdir=dir, initialfile=base)
return filename
所以他们确实使用了 tkinter 的内置 filedialog 模块,但我找不到一些“无模式”对话框的方法。我可以通过两个基本相同的代码打开对话框:
from tkinter import filedialog as tkFileDialog
file_name = tkFileDialog.Open( ... ).show()
file_name = tkFileDialog.askopenfilename()
但它们会阻止整个应用程序 - 用户在关闭对话框之前无法切换窗口或发出新命令。另外,我不能从不同的线程调用这些对话框函数——这会杀死我的整个 Tk 应用程序。我应该怎么办?