このホームページは Amazon Kindle 本の作成中の草稿です。日々、原稿を見直しているので、内容が変わることに留意して読んで下さい。本が出版され次第、このホームページは削除されます。
4.20 スケジュール(タイマー)処理(after、after_idle、after_cancel)
フレームと同様に、「after」、「after_idle」メソッドを用いて一定時間の経過後に関数を実行させることができます。また、「after_cancel」メソッドでその実行を取り消すことができます。「3.17 スケジュール(タイマー)処理」を参照して下さい。
次のプログラムはウィンドウにラベルフレームを配置しています。「update」メソッドでイベント処理の終了後、「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') | |
labelframe = tk.LabelFrame(root, bg='red', | |
text='labelframe_1', labelanchor='n') | |
labelframe.place(x=50, y=20, width=200, height=160) | |
root.update() | |
print('sleep') | |
labelframe.after(2000) | |
def afterfunc(s): | |
print(s) | |
labelframe.after_idle(labelframe.destroy) | |
labelframe.after(3000, afterfunc, 'after') | |
print('before') | |
root.mainloop() |
プログラムを実行すると、ウィンドウが表示された後、指定時間後に、順に下記の文字列が「print」出力されます。
sleep
before
after
before
after