メインのTkinter画面とは別にサブ画面を生成する方法を示します。
【スポンサーリンク】
サブ画面を表示する方法
メイン画面とは別のサブ画面を生成するためには、Toplevel
ウィジェットを使用します。ウィジェットのmasterにサブ画面を渡すことで、そのウィジェットをサブ画面内に表示させることができます。以下、サブ画面中にラベルを表示する例を示します。
実行するとメイン画面と一緒にサブ画面が表示されます。サブ画面は、メイン画面が削除されると一緒に削除されます。
【スポンサーリンク】
チェックボタンでサブ画面を表示させる例
実用上、サブ画面は必要な時だけ表示させて、通常は非表示にしておきたいというケースが多くあります。以下、チェックボタンを用いてサブ画面の表示・非表示を切り替える方法を示します。
実行すると以下の通りチェックボタンだけが表示されます。チェックを入れるとサブ画面が表示され、チェックを外すとサブ画面は再度非表示になります。
チェックボタンをクリックした際に実行する関数(show_or_hide_sub_window)内で、サブ画面の表示(deiconify)・非表示(withdraw)を行っています。
この例では、サブ画面を×ボタンでクローズするとウィジェットそのものが削除されてしまうため、その後チェックボタンで再表示はできなくなってしまいます。実際にアプリに適用する際は、xボタンの処理も行う必要がある点を注意してください。
サブ画面にプログレスバーを表示させる例
より実用的な例として、3秒間だけサブ画面内にプログレスバーを表示させる例を示します。処理中であることを明確に示す際等、使用するケースは多いです。プログレスバーの細かいオプションなど、使い方についてはこちらを参照ください。
実行するとメイン画面内にラベルとボタンが表示され、ボタンをクリックすると3秒間だけプログレスバーを表示したサブ画面が表示されます。その後自動的にサブ画面のみがCloseされます。
Toplevelクラスを継承したクラスを使用するやや応用的な例になりますが、プログレスバーは何度も表示させる機会があるので、このようにした方が再利用が容易になるのでお勧めです。
サブ画面の設定では、wm_overrideredirectをTrueに設定することでタイトルバーを非表示にして、動作中にxボタンを押せないようにケアしています。
【スポンサーリンク】