このホームページは Amazon Kindle 本の作成中の草稿です。日々、原稿を見直しているので、内容が変わることに留意して読んで下さい。本が出版され次第、このホームページは削除されます。
2.26 スケジュール(タイマー)処理(after、after_idle、after_cancel)
メインウィンドウと同様にスケージュールまたはタイマー機能を持っています。1.26 スケジュール(タイマー)処理を参照して下さい。
次のプログラムはサブウインドウを表示して、「after」メソッドで 2 秒間待機(スリープ)します。次いで、同じ「after」メソッドで関数「afterfunc」を 3 秒後に実行するようにシステムに登録しています。関数「afterfunc」では「after_idle」メソッドで「destroy」メソッドを実行してサブウィンドウを閉じています。それぞれの実行タイミングが分かるように 「sleep」、「before」、「after」の文字列を「print」出力しています。
import tkinter as tk | |
root = tk.Tk() | |
root.geometry('300x200+100+100') | |
sub = tk.Toplevel(root, width=300, height=200, bg='red') | |
sub.geometry('+140+120') | |
root.update() | |
root.wm_deiconify() | |
sub.wm_deiconify() | |
print('sleep') | |
sub.after(2000) | |
def afterfunc(s): | |
print(s) | |
sub.after_idle(sub.destroy) | |
sub.after(3000, afterfunc, 'after') | |
print('before') | |
root.mainloop() |
プログラムを実行すると、サブウィンドウが表示された後、指定時間後に、順に下記の文字列が「print」出力されます。
sleep
before
after
before
after