Python Code Notes

Information by python engineer

【tkinter】サブ画面を表示する方法【Python】

メインのTkinter画面とは別にサブ画面を生成する方法を示します。


【スポンサーリンク】


サブ画面を表示する方法

メイン画面とは別のサブ画面を生成するためには、Toplevelウィジェットを使用します。ウィジェットのmasterにサブ画面を渡すことで、そのウィジェットをサブ画面内に表示させることができます。以下、サブ画面中にラベルを表示する例を示します。

How to use sub-window

実行するとメイン画面と一緒にサブ画面が表示されます。サブ画面は、メイン画面が削除されると一緒に削除されます。

サブ画面表示

[↑ 目次へ]


【スポンサーリンク】


チェックボタンでサブ画面を表示させる例

実用上、サブ画面は必要な時だけ表示させて、通常は非表示にしておきたいというケースが多くあります。以下、チェックボタンを用いてサブ画面の表示・非表示を切り替える方法を示します。

How to on/off sub-window

実行すると以下の通りチェックボタンだけが表示されます。チェックを入れるとサブ画面が表示され、チェックを外すとサブ画面は再度非表示になります。

チェックなし

チェック時

チェックボタンをクリックした際に実行する関数(show_or_hide_sub_window)内で、サブ画面の表示(deiconify)・非表示(withdraw)を行っています。

この例では、サブ画面を×ボタンでクローズするとウィジェットそのものが削除されてしまうため、その後チェックボタンで再表示はできなくなってしまいます。実際にアプリに適用する際は、xボタンの処理も行う必要がある点を注意してください。

[↑ 目次へ]


サブ画面にプログレスバーを表示させる例

より実用的な例として、3秒間だけサブ画面内にプログレスバーを表示させる例を示します。処理中であることを明確に示す際等、使用するケースは多いです。プログレスバーの細かいオプションなど、使い方についてはこちらを参照ください。

Progressbar in sub-window

実行するとメイン画面内にラベルとボタンが表示され、ボタンをクリックすると3秒間だけプログレスバーを表示したサブ画面が表示されます。その後自動的にサブ画面のみがCloseされます。

実行時

ボタンクリック後

Toplevelクラスを継承したクラスを使用するやや応用的な例になりますが、プログレスバーは何度も表示させる機会があるので、このようにした方が再利用が容易になるのでお勧めです。

サブ画面の設定では、wm_overrideredirectTrueに設定することでタイトルバーを非表示にして、動作中にxボタンを押せないようにケアしています。

[↑ 目次へ]


【スポンサーリンク】