import tkinter as tk import random # 問題 mondai = [] # 出題番号 number = 0 # 状態 state = 0 # ガイド文字列 guide_message = '開始ボタンを押すとスタートします' def func_clear(): ''' 消去処理 ''' # 表示消去 global lbl lbl['text'] = '' # 次の出題の表示設定 global number number += 1 root.after(500, func_interval) return def show_addend(): ''' 問題の表示 ''' global lbl global mondai global number lbl['text'] = str(mondai[number]) global root root.after(500, func_clear) return def func_interval(): ''' 定期処理 ''' global number global mondai if number < len(mondai): # 出題番号の値表示 show_addend() return # 定期処理開始 global root global btnStart btnStart['state'] = tk.NORMAL btnStart['text'] = '答え' lblStart.config(state=tk.NORMAL) return def satrt_anzan(): ''' ハンドラ関数 ''' global btnStart global mondai global number global state if state == 0: state = 1 # 押されたボタンの無効化 btnStart.config(state=tk.DISABLED) lblStart.config(state=tk.DISABLED) # 変数初期化 number = 0 # 問題作成 mondai = [] for no in range(10): mondai.append(random.randint(1, 9)) # 最初の値表示 show_addend() return state = 0 # 最後まで表示した lbl['text'] = f'答え={sum(mondai)}' btnStart['text'] = '開始' number = 0 return ''' メイン処理 ''' # トップレベルウインドウの生成 root = tk.Tk() root.title('Flash Anzan') root.geometry('320x240') #Labelウィジェットの生成 lbl = tk.Label(root, text='', font=('System', 40)) lblStart = tk.Label(root, text=guide_message, font=('System', 20)) # Buttonウィジェットの生成と配置 btnStart = tk.Button(root, text='開始', font=('System', 20), command=satrt_anzan) # 各列の割合を指定 root.columnconfigure(0, weight=1) # 各行の割合を指定 root.rowconfigure(0, weight=3) root.rowconfigure(1, weight=1) root.rowconfigure(2, weight=1) # grid関数で配置 lbl.grid(column=0, row=0, columnspan=1) btnStart.grid(column=0, row=1, columnspan=1) lblStart.grid(column=0, row=2, columnspan=1) # トップレベルウインドウの表示 root.mainloop()