基于tkinter的第一个GUI小项目:背英语六级单词软件

文章目录


任务

  基于爬取到的英语六级高频词,利用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.演示

基于tkinter的第一个GUI小项目:背英语六级单词软件
基于tkinter的第一个GUI小项目:背英语六级单词软件


小结
  写了大半天bug才勉强能运行了,忽略界面丑,功能简陋,还是差强人意。就到这里,以后有时间再随缘更新升级。

上一篇:python tkinter的简要应用


下一篇:浏览器关闭后,Session会话结束了么?