在上一篇文章里,我们实现了基于命令行界面的藏文背单词程序的功能,程序显示藏语词汇,用户输入中文释义。
在这篇文章里,我们尝试用图形界面来实现藏文背单词的程序,更好地实现用户交互。
下面是Python代码。在这段代码里我们使用了Tkinter库。Tkinter(Tcl/Tk interface)是 Python 的标准 GUI(图形用户界面)工具包,用于创建窗口、按钮、标签、文本框等 GUI 元素,并实现用户与程序的交互。
文章末尾我们给出了代码运行演示效果。
import tkinter as tk
from tkinter import messagebox
import random
# 定义单词列表,每个元素是一个元组,包含藏文单词和其对应的中文释义,以及测试时的4个选项
word_list = [
("ཀུ་ཤུ།", "苹果",("苹果","葡萄","桃子","西瓜")),
("ཁྱི།", "狗",("猫","狗","猴子","羊")),
("དམར་པོ།", "红色",("红色","黑色","黄色","紫色")),
("དཔྱིད་ཀ་", "春天",("春天","夏天","秋天","冬天")),
("ལྔ།", "五",("二","三","四","五"))
]
class VocabularyTestApp:
def __init__(self, master):
self.master = master
self.master.title("藏文单词测试")
self.master.geometry("250x300") # 设置窗口大小
self.current = ""
self.current_word = ""
self.correct_answer = ""
self.score = 0
self.attempts = 0
self.word_label = tk.Label(master, text="", font=("Helvetica", 18))
self.word_label.pack(pady=20)
self.radio_var = tk.StringVar()
self.radio_buttons = []
for i in range(4):
rb = tk.Radiobutton(master, text="", variable=self.radio_var, value="", font=("Helvetica", 14))
rb.pack(pady=5)
self.radio_buttons.append(rb)
self.next_button = tk.Button(master, text="下一个", command=self.next_word)
self.next_button.pack(pady=10)
self.update_word()
def update_word(self):
self.attempts += 1
# 从单词列表中移除上一个单词
if self.current:
word_list.remove((self.current))
current = random.choice(word_list)
self.current_word= current[0]
self.correct_answer = current[1]
self.all_answer = current[2]
self.word_label.config(text=self.current_word)
#random.shuffle(word_list)
for i in range(4):
self.radio_buttons[i].config(text=self.all_answer[i], value=self.all_answer[i])
self.radio_var.set(None) # 设置默认未选中状态
def next_word(self):
selected_answer = self.radio_var.get()
if selected_answer == self.correct_answer:
self.score += 1
if self.attempts < 5:
self.update_word()
self.radio_var.set(None) # 设置默认未选中状态
else:
messagebox.showinfo("测试结果", f"你的得分: {self.score}/{self.attempts},正确率: {self.score/self.attempts:.2%}")
self.master.destroy()
def main():
root = tk.Tk()
app = VocabularyTestApp(root)
root.mainloop()
if __name__ == "__main__":
main()
藏文背单词窗体版