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 モジュールを使用していますが、「モードレス」ダイアログを表示する方法が見つかりません。基本的に同じである 2 つのコードでダイアログを開くことができます。
from tkinter import filedialog as tkFileDialog
file_name = tkFileDialog.Open( ... ).show()
file_name = tkFileDialog.askopenfilename()
ただし、アプリケーション全体をブロックします。ユーザーは、ダイアログを閉じるまで、ウィンドウを切り替えたり、新しいコマンドを発行したりできません。また、これらのダイアログ関数を別のスレッドから呼び出すことはできません。これにより、Tk アプリ全体が強制終了されます。私は何をすべきか?