帮我用tkinter编写一个英语学习软件,要求如下:主页面有两个按键,第一个按键将跳转到一个数据库页面,在此页面可以将单词输入到数据库内,若存在则将该单词从数据库中删除。第二个按键将跳转到英语默写页面,点击指定按钮便随机将数据库中的一个单词的部分显示出来,并要求补充完整,若补充的单词错误则报错并清除填入的数据,反之则显示正确并从数据库中选择另一个单词,期间用户可以随时选择停止
时间: 2023-09-19 09:10:50 浏览: 228
python 使用tkinter 实现一个猜数字游戏
5星 · 资源好评率100%
好的,下面是一个简单的英语学习软件的代码,使用了tkinter和sqlite3模块。
```python
import tkinter as tk
import sqlite3
import random
class EnglishLearningApp:
def __init__(self, master):
self.master = master
master.title("英语学习软件")
# 创建两个按钮
self.database_button = tk.Button(master, text="单词库", command=self.database_page)
self.database_button.pack(pady=10)
self.quiz_button = tk.Button(master, text="英语默写", command=self.quiz_page)
self.quiz_button.pack(pady=10)
# 创建数据库连接
self.conn = sqlite3.connect('words.db')
self.cursor = self.conn.cursor()
# 创建单词库表
self.cursor.execute('''CREATE TABLE IF NOT EXISTS words
(word text PRIMARY KEY)''')
self.conn.commit()
def database_page(self):
# 创建单词库页面
self.database_window = tk.Toplevel(self.master)
self.database_window.title("单词库")
# 创建输入框和按钮
self.word_entry = tk.Entry(self.database_window)
self.word_entry.pack(padx=10, pady=10)
self.add_button = tk.Button(self.database_window, text="添加单词", command=self.add_word)
self.add_button.pack(pady=5)
self.delete_button = tk.Button(self.database_window, text="删除单词", command=self.delete_word)
self.delete_button.pack(pady=5)
def add_word(self):
# 将单词添加到数据库中
word = self.word_entry.get().strip().lower()
if word:
self.cursor.execute("INSERT INTO words VALUES (?)", (word,))
self.conn.commit()
def delete_word(self):
# 从数据库中删除单词
word = self.word_entry.get().strip().lower()
if word:
self.cursor.execute("DELETE FROM words WHERE word=?", (word,))
self.conn.commit()
def quiz_page(self):
# 创建英语默写页面
self.quiz_window = tk.Toplevel(self.master)
self.quiz_window.title("英语默写")
# 获取单词库中的单词
self.cursor.execute("SELECT word FROM words")
self.words = [row[0] for row in self.cursor.fetchall()]
# 创建显示单词和输入框
self.word_label = tk.Label(self.quiz_window, font=('Arial', 20))
self.word_label.pack(pady=10)
self.answer_entry = tk.Entry(self.quiz_window, font=('Arial', 20))
self.answer_entry.pack(pady=10)
# 创建按钮
self.next_button = tk.Button(self.quiz_window, text="下一个", command=self.next_word)
self.next_button.pack(pady=5)
self.stop_button = tk.Button(self.quiz_window, text="停止", command=self.stop_quiz)
self.stop_button.pack(pady=5)
# 显示第一个单词
self.next_word()
def next_word(self):
# 显示下一个单词
if self.words:
self.current_word = random.choice(self.words)
self.word_label.config(text=self.get_masked_word(self.current_word))
else:
self.stop_quiz()
def get_masked_word(self, word):
# 将单词的一部分替换为下划线
length = len(word)
masked_length = max(2, length // 2)
start = random.randint(0, length - masked_length)
end = start + masked_length
masked_word = word[:start] + '_' * (end - start) + word[end:]
return masked_word
def stop_quiz(self):
# 关闭英语默写页面
self.quiz_window.destroy()
def __del__(self):
# 关闭数据库连接
self.conn.close()
root = tk.Tk()
app = EnglishLearningApp(root)
root.mainloop()
```
运行代码后会弹出一个主窗口,包含两个按钮:“单词库”和“英语默写”。单击“单词库”按钮将会弹出一个新窗口,可以在其中添加和删除单词。单击“英语默写”按钮将会弹出另一个新窗口,可以进行英语默写。在英语默写页面中,单击“下一个”按钮将会显示一个新的单词,其中一部分用下划线替换。用户需要在输入框中填写正确的单词,单击“停止”按钮将会关闭英语默写页面。
阅读全文