こんにちは。以前作った英単語テストをベースにポップアップ入力できるようにつくり変えたものです。
以下のコードを実行するとポップアップが表示され英単語テストができます。
python
import tkinter as tk
class CustomDialog:
def __init__(self, parent, prompt):
self.parent = parent
self.prompt = prompt
self.input_word = None
self.top = tk.Toplevel(parent)
self.top.title("日本語に合う英単語を入力してください")
# ウィンドウの表示位置を指定
self.top.geometry("+{}+{}".format(parent.winfo_x() + 50, parent.winfo_y() + 50))
# ウィンドウのサイズを設定
self.top.geometry("400x150")
self.label = tk.Label(self.top, text=self.prompt, font=("Helvetica", 14))
self.label.pack(pady=10)
self.entry = tk.Entry(self.top, font=("Helvetica", 14))
self.entry.pack(pady=10)
self.entry.bind("<Return>", self.on_enter)
self.ok_button = tk.Button(self.top, text="OK", command=self.on_ok, font=("Helvetica", 12))
self.ok_button.pack(pady=10)
def on_enter(self, event):
self.on_ok()
def on_ok(self):
self.input_word = self.entry.get()
self.top.destroy()
word = [
"少年", "boy",
"車", "car",
"母", "mother",
"弟", "brother",
"犬", "dog",
"猫", "cat",
"サッカー", "soccer",
"野球", "baseball",
"日本", "Japan",
"父", "father"
]
count = 0
while count < 10:
tword = word[count * 2]
root = tk.Tk()
root.withdraw()
custom_dialog = CustomDialog(root, tword)
root.wait_window(custom_dialog.top)
input_word = custom_dialog.input_word
if input_word is None:
print("ユーザーによってダイアログが閉じられました。")
break
if input_word == word[count * 2 + 1]:
print('正解です。')
else:
print('不正解です。正解は%s' % (word[count * 2 + 1]))
count += 1
# ループが終了したらメインウィンドウを閉じる
root.destroy()
以下の画像は実行画面のサンプルです。