
【スポンサーリンク】
サブ画面を表示する方法
メイン画面とは別のサブ画面を生成するためには、Toplevel
を使用する。
import tkinter #メイン画面 root = tkinter.Tk() root.geometry("400x100") root.title("main window") #サブ画面 sub_window = tkinter.Toplevel() sub_window.title("sub window") sub_window.geometry("400x100") root.mainloop()
実行するとメイン画面と一緒にサブ画面が表示される。Toplevel
で生成したサブ画面は、メイン画面が削除されると一緒に削除される。

【スポンサーリンク】
サブ画面にプログレスバーを表示させる例
5秒タイマー起動中に、サブ画面にプログレスバーを表示して、処理中であることを表示させる例を示す。プログレスバーの使い方は、こちらを参照。
import time import threading import tkinter from tkinter import ttk class TimerButton(tkinter.Button): def __init__(self, root): super().__init__( root, text="start", width=15, command=self.start_timer, ) def start_timer(self): #サブウィンドウ self.sub = tkinter.Toplevel() #プログレスバー self.p = ttk.Progressbar(self.sub, mode="indeterminate", ) self.p.pack() self.p.start(3) #タイマー開始 self.thread = threading.Thread(target=self.timer) self.thread.start() def timer(self): #タイマー i = 0 while i < 5: time.sleep(1) i += 1 self.p.stop() #プログレスバー停止 self.sub.destroy() #サブウィンドウ削除 if __name__ == "__main__": root = tkinter.Tk() b= TimerButton(root) b.pack() root.mainloop()
メイン画面に表示されたボタンをクリックすると5秒タイマーが起動し、同時にプログレスバーを表示したサブ画面が出現する。5秒後にタイマーが切れるとサブ画面のみCloseする。


【スポンサーリンク】