当然可以!以下是使用Python和Tkinter库编写的代码,实现了你的需求:
```python
import random
import tkinter as tk
from tkinter import messagebox
import pandas as pd
# 读取Excel文件
df = pd.read_excel('data.xlsx')
# 创建主窗口
window = tk.Tk()
window.title("随机选择")
window.geometry("400x300")
# 随机选择一行
def select_row():
selected_row = random.choice(df.iloc[:, 0])
selected_data = df[df.iloc[:, 0] == selected_row]
selected_text.set(selected_row)
create_buttons(selected_data)
# 检查答案
def check_answer(answer):
selected_row = selected_text.get()
correct_answer = df[df.iloc[:, 0] == selected_row].iloc[:, 1].values[0]
if answer == correct_answer:
messagebox.showinfo("回答正确", "恭喜你,回答正确!")
else:
messagebox.showinfo("回答错误", f"回答错误!正确答案是:{correct_answer}")
# 创建按钮
def create_buttons(selected_data):
selected_index = selected_data.index[0]
options = df[df.index != selected_index].sample(n=2).iloc[:, 1].tolist()
options.append(selected_data.iloc[:, 1].values[0])
random.shuffle(options)
for widget in window.winfo_children():
if isinstance(widget, tk.Button):
widget.destroy()
for i, option in enumerate(options):
button = tk.Button(window, text=option, width=20, height=2, command=lambda ans=option: check_answer(ans))
button.pack(pady=10)
# 显示选择的行
selected_text = tk.StringVar()
selected_label = tk.Label(window, textvariable=selected_text, font=("Arial", 16), width=30, height=2)
selected_label.pack()
# 选择按钮
select_button = tk.Button(window, text="随机选择一行", width=20, height=2, command=select_row)
select_button.pack()
# 运行主循环
window.mainloop()
```
请确保将代码中的`data.xlsx`替换为你的Excel文件的路径。运行代码后,会弹出一个可视化界面,点击"随机选择一行"按钮会在界面上显示随机选择的一行数据,并创建三个按钮,其中一个是正确答案。如果选择了正确的按钮,会弹出提示框告知回答正确。如果选择了错误的按钮,会弹出提示框告知正确答案。
希望这能满足你的需求!如果有任何问题,请随时向我提问。