tkinter のファイル選択ダイアログでタスクバーに表示したままルートウィンドウを非表示にしたい
実現したいこと
python でファイル選択ダイアログを表示したいです。
前提
tkinter.filedialog の askopenfilename メソッドでファイル選択のみを行う処理を用意しました。
このとき tkinter が生成する rootウィンドウを非表示にしたいです。
ただ、rootウィンドウを非表示にするとタスクバーからも消えてしまい、ウィンドウを見失った場合に探しにくくなってしまいました。
タスクバーには表示したままでルートウィンドウを非表示にしたいです。
また、常に前面表示とすることで見失うことが無いようにする案もありますが、期待する挙動ではないため採用できません。
該当のソースコード
Python
1import tkinter as tk 2import tkinter.filedialog 3root = tk.Tk() 4root.withdraw() 5file = tk.filedialog.askopenfilename() 6print(file)
試したこと
次のような方針を試しましたが、いずれもうまくいきませんでした。
-
withdraw() で親ウィンドウを非表示にする。
→ タスクバーから消えてしまう。
-
geometry('0x0') と overrideredirect(True)で親ウィンドウを非表示にする。
→ タスクバーから消えてしまう。
-
タスクバーから消えた状態で iconbitmap() によりアイコンを指定する。
→ タスクバーから消えたままアイコンは表示されない。
-
iconify()で親ウィンドウを最小化する。
→ タスクバーでアイコンをクリックすると親ウィンドウが見えてしまう。
-
iconify()で親ウィンドウを最小化し、親ウィンドウのサイズ変更イベントや最小化解除のイベントに対し iconify()で親ウィンドウを最小化する処理を設定する。
→ 親ウィンドウと一緒にファイル選択ダイアログも最小化されてしまう。
-
親ウィンドウを非表示とし、別に用意したダミーウィンドウを最小化し、ダミーウィンドウの最小化解除のイベントに対し「ダミーウィンドウを最小化する処理と親ウィンドウを前面表示する処理」を設定する。
→ ダミーウィンドウが最小化する前に見えてしまう。また Alt + Tab でダミーウィンドウと親ウィンドウの両方が見えてしまう。
補足情報(FW/ツールのバージョンなど)
実行環境は以下のとおりです。
- Windows10
- Python3.8
質問
「試したこと」欄に記載したようにいろいろ試したつもりですが、うまくいきませんでした。
タスクバーに表示したままルートウィンドウを非表示にすることは実現できないのでしょうか?
python ではTcl言語で開発されたTkツールキットを呼び出しているということは知っていますが、python 側でどうにかできる問題ではないのでしょうか?
よろしくお願いいたします。

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/03/19 06:59