前提・実現したいこと
タイマーを起動して、ボタンなど(マウス、キーボード)を押さずにcount=5になったら、quit_app()が自動的に実行されるコードを作りたいです。
該当のソースコード
python
1# -*- coding:utf-8 -*- 2import tkinter 3import threading 4 5start_flag = False 6quitting_flag = False 7count = 0 8 9 10# タイマー 11def timer(): 12 global label 13 global start_flag 14 global quitting_flag 15 global count 16 17 while not quitting_flag: 18 if start_flag: 19 label.config(text=count) 20 count += 1 21 if count > 10: 22 start_flag = False 23 24 import time 25 time.sleep(1) 26 27 28 29# スタートボタンが押された時の処理 30def start_button_click(event): 31 global start_flag 32 global count 33 34 count = 0 35 start_flag = True 36 37# ストップボタンが押された時の処理 38def stop_button_click(event): 39 global start_flag 40 global count 41 start_flag = False 42 43# 終了ボタンが押された時の処理 44def quit_app(): 45 global quitting_flag 46 global app 47 global thread1 48 49 quitting_flag = True 50 51 # thread1終了まで待つ 52 thread1.join() 53 54 # thread1終了後にアプリ終了 55 app.destroy() 56 57# メインウィンドウを作成 58app = tkinter.Tk() 59app.geometry("200x100") 60 61# ボタンの作成と配置 62start_button = tkinter.Button( 63 app, 64 text="スタート", 65) 66start_button.pack() 67 68stop_button = tkinter.Button( 69 app, 70 text="ストップ", 71) 72stop_button.pack() 73 74 75# ラベルの作成と配置 76label = tkinter.Label( 77 app, 78 width=5, 79 height=1, 80 text=0, 81 font=("", 20) 82) 83label.pack() 84 85# イベント処理の設定 86start_button.bind("<ButtonPress>", start_button_click) 87stop_button.bind("<ButtonPress>", stop_button_click) 88app.protocol(count == 5, quit_app) #これで動かなかった。 89 90# スレッドの生成と開始 91thread1 = threading.Thread(target=timer) 92thread1.start() 93 94# メインループ 95app.mainloop()