文章目录
任务
基于爬取到的英语六级高频词,利用python中的tkinter做出一个能起到考察词汇掌握情况作用的GUI。
1.引入库
import tkinter as tk #GUI
import random #抽单词
2.读入数据
f=open('./cet6word.txt','r',encoding='utf-8')
word=[]
mean=[]
for line in f:
l=line.split()
word.append(l[0])
m=''
for i in l:
if i!=l[0]:
m=m+i
mean.append(m)
该处使用的是爬取英语六级高频词中保存的数据。
3.打开窗口
# 主窗口
window = tk.Tk()
window.title("cet6---1.0") # 窗口标题
window.geometry('400x500') # 窗口尺寸
4.初始化
l=['']*100#标签
bt=[['']*5]*100#按钮
c=0#计数
5.放置标签和按钮
代码如下:
j=random.randint(0,len(word))
print(j)
print(word[j],": ")
k=random.randint(0,3)
#标签
var = tk.StringVar()
l[c] = tk.Label(window, textvariable=var, bg='gray',fg='white', font=('Arial', 12), width=50, height=2)
l[c].pack()
var.set(word[j])
# 按钮
for z in range(4):
if(z==k):
bt[c][z]=(tk.Button(window, text=mean[j], width=35, height=2))
bt[c][z].pack()#正确答案随机放在四个选项中
else:
bt[c][z]=(tk.Button(window, text=mean[random.randint(0,len(word))], width=35, height=2))
bt[c][z].pack()
for i in range(4):
if(bt[c][i].config('text')[-1]==mean[j]):
bt[c][i].bind("<Button-1>",hit_me1)
else:
bt[c][i].bind("<Button-1>",hit_me2)
bt[c][4]=(tk.Button(window, text='下一个', width=15, height=2))
bt[c][4].bind("<Button-1>",hit_me3)
bt[c][4].pack()
6.按钮事件
代码如下:
def hit_me1(event):#按钮正确答案
event.widget["bg"]='green'#绿色表示正确
def hit_me2(event):#按钮错误答案
event.widget["bg"]='red'#红色表示错误
def hit_me3(event):#按钮下一页
global c
for i in range(5):
bt[c][i].destroy()#删掉上一页的按钮
l[c].destroy()#删掉上一页的标签
c=c+1
#偷懒复制粘贴
j=random.randint(0,len(word))
print(j)
print(word[j],": ")
k=random.randint(0,3)
var = tk.StringVar()
l[c] = tk.Label(window, textvariable=var, bg='gray',fg='white', font=('Arial', 12), width=50, height=2)
l[c].pack()
var.set(word[j])
for z in range(4):
if(z==k):
bt[c][z]=(tk.Button(window, text=mean[j], width=35, height=2))
bt[c][z].pack()
else:
bt[c][z]=(tk.Button(window, text=mean[random.randint(0,len(word))], width=35, height=2))
bt[c][z].pack()
for i in range(4):
if(bt[c][i].config('text')[-1]==mean[j]):
bt[c][i].bind("<Button-1>",hit_me1)
else:
bt[c][i].bind("<Button-1>",hit_me2)
bt[c][4]=tk.Button(window, text='下一个', width=15, height=2)
bt[c][4].bind("<Button-1>",hit_me3)
bt[c][4].pack()
7.演示
小结
写了大半天bug才勉强能运行了,忽略界面丑,功能简陋,还是差强人意。就到这里,以后有时间再随缘更新升级。