软考知识点复习工具

为了更好的复习软考,参考多方代码编写了这个复习工具,用python的tkinter,messagebox,xlrd,random写的。初始界面如下。

软考知识点复习工具

点击抽查,会在底下打印出一条知识点,右边黄色方框为计数部分,每到十次就会弹窗提示“休息”。

软考知识点复习工具

最后在cmd的py文件所在路径用pyinstaller -F -w heybitch.py导出exe文件即可。

源码如下:

from tkinter import *
from tkinter import messagebox
import xlrd
import random

on_hit = False
counter = 0
def books():
    workbook = xlrd.open_workbook('D:\WORK\CODE\高级信息系统项目管理师.xlsx')
    excel_sheet = workbook.sheet_by_index(0)
    # 获取行数和列数
    nrows_num = excel_sheet.nrows
    ncols_num = excel_sheet.ncols
    i = 1
    while i <= 10:
        if nrows_num > 10:
            # 生成随机数
            random_num = random.randint(1, nrows_num - 1)
            num = int(excel_sheet.row(random_num)[0].value)
            number = excel_sheet.row(random_num)[1].value
            name = excel_sheet.row(random_num)[2].value
            res2.set(num)
            res.set(name)
            res1.set(number)
            i = i + 1
        else:
            messagebox.showinfo("数据不足,请添加")
            break

def count():
    global on_hit
    if on_hit == False:
        def counting():
            global counter
            counter += 1
            label1.config(text=str(counter))
            for i in [11, 21, 31, 41]:
                if counter == i:
                    messagebox.showinfo('提示', '够钟休息啦,靓仔。')
                elif counter == 51:
                    messagebox.showinfo('提示', 'coding time!')

        counting()

def on_click():
    books()
    count()

root = Tk()
root.title('信息系统项目管理师')
root.geometry('580x600+500+250')
# root.resizable(False,False)#固定窗体大小
button = Button(root, text='抽查', command=on_click)
button.grid(row=0, column=0)

root.canvas = Canvas(root, height=700, width=700)  # 创建画布
root.image_file = PhotoImage(file="D:/work/text/lyf3.gif")  # 加载图片文件
root.image = root.canvas.create_image(0, 0, anchor='nw', image=root.image_file)  # 将图片置于画布上
root.canvas.grid(rowspan=4, columnspan=4)  # 放置画布(为上端)

label = Label(root, text='计数')
label.grid(row=0, column=1)
res = StringVar()
res1 = StringVar()
res2 = StringVar()
entry = Entry(root, width='4', textvariable=res2)
entry.grid(row=1, column=0)
entry1 = Entry(root, width='45', textvariable=res1)
entry1.grid(row=1, column=1)
label1 = Label(root, text='0', bg='yellow', height='3', width='4')
label1.grid(row=0, column=2)
message = Message(root, bg='black', foreground='white', textvariable=res)
message.grid(row=2, column=0, columnspan=3)
root.mainloop()