pythonで動体視力訓練アプリを作ります。任意の四桁のランダムな数字が左から右へ任意のスピードで流れ、指定された四桁の数字が見えたらストップボタンを押すと止まるものとします。スピードは任意に変えられるものとします。ウィジェットを使ったプログラムを書いてください。
以下は、PythonのGUIライブラリーであるTkinterを使用して、動体視力訓練アプリを作成するためのプログラム例です。
import tkinter as tk
import random
import time
class VisionTrainingApp:
def __init__(self, master):
self.master = master
master.title("Dynamic Vision Training App")
# 数字の長さとスピードを設定する
self.digit_length = 4
self.speed = 10
# ラベルを作成する
self.label = tk.Label(master, font=("Helvetica", 36))
self.label.pack(pady=50)
# スタートボタンを作成する
self.start_button = tk.Button(master, text="START", command=self.start_training)
self.start_button.pack(side=tk.LEFT, padx=50)
# ストップボタンを作成する
self.stop_button = tk.Button(master, text="STOP", command=self.stop_training, state=tk.DISABLED)
self.stop_button.pack(side=tk.LEFT, padx=50)
# 数字を生成する
self.target_digit = self.generate_digit()
# ビューの更新を開始する
self.update_view()
def generate_digit(self):
# ランダムな数字を生成する
return str(random.randint(0, 10**self.digit_length-1)).zfill(self.digit_length)
def update_view(self):
# ランダムな数字を生成する
digit = self.generate_digit()
# ラベルに数字を表示する
self.label.config(text=digit)
# 数字を移動する
self.master.after(self.speed, self.update_view)
def start_training(self):
# スタートボタンを無効にする
self.start_button.config(state=tk.DISABLED)
# ストップボタンを有効にする
self.stop_button.config(state=tk.NORMAL)
# ターゲットの数字を生成する
self.target_digit = self.generate_digit()
def stop_training(self):
# スタートボタンを有効にする
self.start_button.config(state=tk.NORMAL)
# ストップボタンを無効にする
self.stop_button.config(state=tk.DISABLED)
# ターゲットの数字を表示する
self.label.config(text=self.target_digit)
root = tk.Tk()
app = VisionTrainingApp(root)
root.mainloop()
このプログラムでは、Tkinterを使用してウィンドウを作成し、数字を表示するためのラベルを作成します。数字は、指定されたスピードでランダムに生成され、ラベルに表示されます。スタートボタンを押すと、数字がランダムに生成され始め、ストップボタンを押すと、現在表示されている数字がターゲット数字であるかどうかが確認されます。スピードは、数字を更新するための遅延時間として指定されます。数字の桁数は、digit_length変数で指定されます。