Python tkinter-如何打开多个文件对话框?
在python的默认编辑器IDLE中,可以同时打开多个“打开”对话框 我正在查看它们的来源,但我找不到在哪里可以复制这种行为。从他们的Python tkinter-如何打开多个文件对话框?,python,python-3.x,tkinter,tk,Python,Python 3.x,Tkinter,Tk,在python的默认编辑器IDLE中,可以同时打开多个“打开”对话框 我正在查看它们的来源,但我找不到在哪里可以复制这种行为。从他们的IOBinding.py中: from tkinter import filedialog as TkFileDialog ... class IOBinding: ... def askopenfile(self): dir, base = self.defaultfilename("open") if not
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应用程序。我该怎么办?
filedialog
有父项
选项。您可以将其更改为隐藏窗口,以防止阻止根窗口:
from tkinter import filedialog as tkFileDialog
from tkinter import *
def ask_open():
p = hidden if attach_to_hidden.get() else root
tkFileDialog.Open(parent=p).show()
root = Tk()
hidden = Toplevel()
hidden.withdraw()
attach_to_hidden = IntVar()
Checkbutton(root, text='Attach to hidden window', variable=attach_to_hidden).pack()
Button(root, text='Open', command=ask_open).pack()
root.mainloop()