第 2 章 サブウィンドウ

◀ 2.25 前面、背面表示   【目  次】  2.27 複数のサブウィンドウ ▶

999999

 更新日:


 このホームページは Amazon Kindle 本の作成中の草稿です。日々、原稿を見直しているので、内容が変わることに留意して読んで下さい。本が出版され次第、このホームページは削除されます。

2.26 スケジュール(タイマー)処理(after、after_idle、after_cancel)

 メインウィンドウと同様にスケージュールまたはタイマー機能を持っています。1.26 スケジュール(タイマー)処理を参照して下さい。

 次のプログラムはサブウインドウを表示して、「after」メソッドで 2 秒間待機(スリープ)します。次いで、同じ「after」メソッドで関数「afterfunc」を 3 秒後に実行するようにシステムに登録しています。関数「afterfunc」では「after_idle」メソッドで「destroy」メソッドを実行してサブウィンドウを閉じています。それぞれの実行タイミングが分かるように 「sleep」、「before」、「after」の文字列を「print」出力しています。

1
import tkinter as tk
2
root = tk.Tk()
3
root.geometry('300x200+100+100')
4
sub = tk.Toplevel(root, width=300, height=200, bg='red')
5
sub.geometry('+140+120')
6
root.update()
7
root.wm_deiconify()
8
sub.wm_deiconify()
9
print('sleep')
10
sub.after(2000)
11
def afterfunc(s):
13
    print(s)
14
    sub.after_idle(sub.destroy)
15
sub.after(3000, afterfunc, 'after')
16
print('before')
17
root.mainloop()

 プログラムを実行すると、サブウィンドウが表示された後、指定時間後に、順に下記の文字列が「print」出力されます。

sleep
before
after