前言:

谢谢丽哥 是真的强 看到来点个赞哦

1 GUI界面编程

1.1 问题描述
选题:口算题生成系统
设计GUI界面实现口算题生成系统,至少包括但不仅限于以下功能。
(1)口算:题目显示在界面上(除法必须是整除),可以一次性显示或逐个显示题目,用户通过输入框输入计算结果。系统能够显示错误题目,统计正确率。
(2)打印:将题目生成到word文档“口算.docx”中。
(3)可以选择口算及打印生成题目的数量,打印时的行和列,运算符的数量。
1.2 设计说明
包括但不限于:
(1) 拟设计的功能及实现思路、需要用到的知识
一、项目各模块功能及实现思路:
1.第一模块为标题栏模块,表示欢迎用户来到口算生成系统
实现思路为使用tkinter中的frame盒子模型,然后再套用一个Entry函数,将文本内容放置进去,同时使用grid函数调整样式(配合padx、pady调整宽高边距、使整体看起来整洁舒服。

2.第二模块为菜单栏的“文件” 及 “打印”
其中文件中可以选择关闭填写,则GUI界面消失,或者点击打印按钮,可以出现如下两个功能,打印至word或指定题目打印至word,根据用户需求来进行选择在这里插入图片描述

3.第三模块中为选择答题类型,有加法、减法、乘法、除法、混合题目五种题型,用户可以根据自己的需求选中对应的单选框。可以选中开始生成,则十二道题目会直接全部出现于界面上,若点击逐一生成,则可以一道一道的做,同时每一道都可以切换答题题型,根据自己的不足,做对应的题型,十分利于实际做题当中。

4.第四模块中为用户的答题区域:我一共准备了十二道题目,然后利用grid函数将他们整齐的防止在这个lableFrame当中。其中题目框我使用了label标签,后面的答案框使用了Entry标签。即题目是不可修改的,是后台生成,而答案是自己输入进去的,符合实际开发要求。

5.第五模块中为用户选择打印指定题目,我准备了12个复选框,用户可以根据自己的需求,勾中想要打印的题目,然后在界面左上角点击打印指定题目至word就可以成功打印了。题目的第一行三个题目指定下面的前三个复选框,以此类推,题目的第二行三个题目指定第4-6个复选框,以此类推….

6.第六模块中为用户提交答案模块,用户在答题结束时,可以点击提交答案,系统则会为此评分,将结果计算于接下来的成绩模块(也就是第七模块),后面的考试时间是方便用户掌握答题时间的,当用户点击开始生成按钮时,便会自动生成当前的时间,并累加一个小时为考试时间后显示在页面上。

7.第七模块为成绩栏模块,当用户提交答案后,系统会为此评分,每题10分,一共120分,然后同时也会计算对应的正确率,当点击后面的打印错误报告时,系统会将错误的题目打印至word中。

8.第八模块中为错误题目报告模块,系统会统计错误题目数量,同时把对应错误的题号显示在上面

总体项目截图;

二、项目需要用到的知识
1.项目用到了tkinter库,也是GUI编程最重要的一个库。
以下是我本次大作业在csdn中学习的教程:
https://blog.csdn.net/RNG_uzi_/article/details/89792518?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162495353716780265439340%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=162495353716780265439340&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v29-2-89792518.pc_search_result_cache&utm_term=tkinter%E5%BA%93%E7%95%8C%E9%9D%A2%E8%AE%BE%E8%AE%A1&spm=1018.2226.3001.4187
2.其次我用到了python中求质数、合数的知识,因为除法出题必须为整除,所以我的思路是先把100以内所有的合数找出来,然后对每一个合数约分,找到约数就把两个数显示在界面上。
3.用到了大量列表的遍历知识,同时也回顾了上课所讲的列表知识,学会怎么快速遍历列表,可以使用下标遍历:

或者使用遍历或迭代器都是可以的:

(2) 调用库的说明
1.Tkinter库:
Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter 可以在大多数的 Unix 平台下使用,同样可以应用在 Windows 和 Macintosh 系统里。Tk8.0 的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中。
GUI 编程就相当于小孩子搭积木,每个积木块应该放在哪里,每个积木块显示为多大,也就是对大小和位置都需要进行管理,而布局管理器正是负责管理各组件的大小和位置的。此外,当用户调整了窗口的大小之后,布局管理器还会自动调整窗口中各组件的大小和位置。
2.datetime类:
datetime 类通过 datetime.datetime(year, month, day, hour, minute, second, microsecond, tzinfo) 创建对象,对应对象的属性值通过类似方法取得。

datetime.datetime.now():获取当前时刻的详细时间信息
datetime.datetime.combine(date, time):传入 date 和 time 对象,将两者信息组合生成对应 datetime 对象。
timestamp():将 datetime 对象转换成时间戳对象(浮点数,从 1970-1-1 00:00:00 UTC+0:00 开始计算)
3.Random类:

(3) 定义及调用的函数及功能
本次GUI编程共定义了 函数,

  1. 其中主函数_main_为整个函数入口,调用run函数
  2. run函数为GUI界面的框架设计函数,通过Frame和lableFrame设计出整体框架界面后,利用grid函数(类似于前端css调样式的方法)修改整体布局,使页面变得美观。
  3. 定义了create函数(即题目生成函数),当点击开始生成按钮后,command调用create函数,通过全局变量获取到用户选择的题型后,(利用tk.stringVar中的get方法获取)然后利用Random库生成对应题目后,最终set方法注入到界面上去。其中我一共十二个题目,所以我用了for循环进行依次注入,就不用写上12个set方法了,大大提高页面的代码整洁度,提高代码效率。
  4. 定义了create2函数(即逐一生成题目函数),与create函数基本为一个思路,但区别在于不是循环依次注入到界面中。我定义了一个全局变量,然后每当我点击逐一生成按钮后,全局int变量就加一,代表我要注入的下一个题目题号,再拼接上我的前缀字符串常量,使用eval函数,最后set方法注入即可。
  5. 定义了submit函数(题目提交函数),当12道题目全部答完后,便可以点击提交,同时这里我在函数外定义了一个全局变量error_list列表,函数使用global引用,然后对12道题进行遍历,如果答对则答对数量加1,打错则记录错误题目题号,append方法加入至error_list中,并最终显示正确率、错误题目题号等信息
  6. 定义了Print函数(题目打印函数),先获取到文件,如果没有则创建一个,然后利用get方法获取到12道题目,然后打印流输出到文件中即可。
  7. 定义了Print2函数(指定题目打印函数),先获取到文件,如果没有则创建一个,然后通过用户选择复选框的题目,打印指定题目到文件中
  8. 定义了Print3函数(错误题目打印函数),先获取到文件,如果没有则创建一个,然后根据之前系统统计,将用户答错的题目输出到文件中

1.3 实现代码
1.3.1 创建主窗口

1.3.2 页面设计(框架Frame的布局)
1.左上角菜单 Menu

2.从上到下依次框架设计(及grid函数布局):

3.各框架对应实现代码:
标题:

答题类型:

选择打印题目:

答题区域:

提交答案:

成绩报告:

错误题目报告:

最后:

4.create函数(题目全部生成函数详解)
答题类型用了q_type来表示,此函数中引用了这个全局变量(使用global方法)同时利用datetime类获取到当前时间,并用striftime方法设置了指定格式,并且设置了考试时间为一个小时,累加到当前时间并计算出来统一显示在界面上。
然后根据q_type的get方法获取到用户选择的答题类型,生成对应的题目,利用random.randint方法随机生成,然后拼接字符串生成题目,使用eval方法拼接出一个新变量,使用set方法,将题目生成至界面之上。

其中除法我使用了合数找约数,一旦找到便break退出循环,将数据显示在页面上。先将所有合数打表至list列表

5.create2函数(逐一生成函数详解)
与create函数思路基本一致,只不过这里没有用到for循环全部注入到界面上,而是使用了Is_List全局变量,记录我们生成题目到第几个了,然后继续生成下一个。

当题目全部生成完了,再点击逐一生成按钮,系统会弹窗系统提示题目全部生成完了。

6.题目提交函数(submit)
首先用eval方法拼接字符串,再用get方法获取到每道题目及其答案,若答案正确,则正确数量加一,反之将错误题号记录到error_list列表当中,最后提交答案后,显示分数、正确率、错误题号。

7.题目打印函数
首先使用open方法打开对应文件,若文件不存在则创建一个,然后依次获取到对应题目,利用write输出流 输出到文件当中

8.指定题目打印函数(Print2):

9.错误题目打印函数(Print3)

最后是代码:

import sys
import tkinter as tkimport tkinter.messagebox
import pickleimport random
import datetime
# 第1步,实例化object,建立窗口window
window = tk.Tk()
# 第2步,给窗口的可视化起名字
window.title('高翔的口算生成系统')
# 第3步,设定窗口的大小(长 * 宽)
window.geometry('600x500')q_type = tk.StringVar()
question1 = tk.StringVar()
question2 = tk.StringVar()
question3 = tk.StringVar()
question4 = tk.StringVar()
question5 = tk.StringVar()
question6 = tk.StringVar()
question7 = tk.StringVar()
question8 = tk.StringVar()
question9 = tk.StringVar()
question10 = tk.StringVar()
question11 = tk.StringVar()
question12 = tk.StringVar()
answer1=tk.StringVar()
answer2=tk.StringVar()
answer3=tk.StringVar()
answer4=tk.StringVar()
answer5=tk.StringVar()
answer6=tk.StringVar()
answer7=tk.StringVar()
answer8=tk.StringVar()
answer9=tk.StringVar()
answer10=tk.StringVar()
answer11=tk.StringVar()
answer12=tk.StringVar()
grade=tk.StringVar()
grades=tk.StringVar()
error=tk.StringVar()
errors=tk.StringVar()
gg1=tk.StringVar()
gg2=tk.StringVar()
gg3=tk.StringVar()
gg4=tk.StringVar()
gg5=tk.StringVar()
gg6=tk.StringVar()
gg7=tk.StringVar()
gg8=tk.StringVar()
gg9=tk.StringVar()
gg10=tk.StringVar()
gg11=tk.StringVar()
gg12=tk.StringVar()Date=tk.StringVar()
Is_List=1
list = []
for i in range(4, 100):for j in range(2, i):if (i % j == 0):list.append(i)break
print((list))def create():global q_typeDate.set((datetime.datetime.now().strftime("%m-%d %H:%M"))+"考试至"+(datetime.datetime.now()+datetime.timedelta(hours=1)).strftime("%m-%d %H:%M"))if (q_type.get() == 'jia'):for i in range(1, 13):first = random.randint(1, 100)second = random.randint(1, 100)result = str(first) + '+' + str(second) + '='qq = eval("question" + str(i))qq.set(result)elif (q_type.get() == 'jian'):for i in range(1, 13):first = random.randint(1, 100)second = random.randint(1, 100)result = str(first) + '-' + str(second) + '='qq = eval("question" + str(i))qq.set(result)elif (q_type.get() == 'cheng'):for i in range(1, 13):first = random.randint(1, 100)second = random.randint(1, 100)result = str(first) + '*' + str(second) + '='qq = eval("question" + str(i))qq.set(result)elif (q_type.get() == 'chu'):for k in range(1, 13):suiji = random.randint(1, 72)for i in range(2,list[suiji]):#print(list[suiji])if list[suiji] % i == 0:j = list[suiji] / ibreakresult = str(list[suiji]) + '/' + '{:g}'.format(j) + '='qq = eval("question" + str(k))qq.set(result)else:for i in range(1, 5):first = random.randint(1, 100)second = random.randint(1, 100)result = str(first) + '*' + str(second) + '='qq = eval("question" + str(i))qq.set(result)for i in range(5, 10):first = random.randint(1, 100)second = random.randint(1, 100)result = str(first) + '+' + str(second) + '='qq = eval("question" + str(i))qq.set(result)for i in range(10, 13):first = random.randint(1, 100)second = random.randint(1, 100)result = str(first) + '-' + str(second) + '='qq = eval("question" + str(i))qq.set(result)# first = random.randint(1, 100)# second = random.randint(1, 100)# result = str(first) + '-' + str(second) + '='# qq = eval("question" + str(i))# qq.set(result)
def reply():#定义函数,用于多次生成弹窗tk.messagebox.showwarning(title='提示', message='题目已经全部出完了~')
def create2():Date.set((datetime.datetime.now().strftime("%m-%d %H:%M"))+"考试至"+(datetime.datetime.now()+datetime.timedelta(hours=1)).strftime("%m-%d %H:%M"))global Is_Listif(Is_List>12):reply()if (q_type.get() == 'jia'):# print('1')first = random.randint(1, 100)second = random.randint(1, 100)result = str(first) + '+' + str(second) + '='qq = eval("question" + str(Is_List))qq.set(result)Is_List+=1elif (q_type.get() == 'jian'):first = random.randint(1, 100)second = random.randint(1, 100)result = str(first) + '-' + str(second) + '='qq = eval("question" + str(Is_List))qq.set(result)Is_List += 1elif (q_type.get() == 'cheng'):first = random.randint(1, 100)second = random.randint(1, 100)result = str(first) + '*' + str(second) + '='qq = eval("question" + str(Is_List))qq.set(result)Is_List += 1elif (q_type.get() == 'chu'):suiji = random.randint(1, 72)for i in range(2, list[suiji]):# print(list[suiji])if list[suiji] % i == 0:j = list[suiji] / ibreakresult = str(list[suiji]) + '/' + '{:g}'.format(j) + '='qq = eval("question" + str(Is_List))qq.set(result)else:first = random.randint(1, 100)second = random.randint(1, 100)result = str(first) + '+' + str(second) + '='qq = eval("question" + str(Is_List))qq.set(result)Is_List += 1
right_list=[]
error_list=[]def submit():global error_listerror_list.clear()true=0for i in range(1,13):an=eval("answer"+str(i))qu=eval("question"+str(i))ans=an.get()qus=qu.get()qus_list=qus.split('=')quse=str(eval(qus_list[0]))if quse==ans:true+=1else:error_list.append(i)sum = ''for i in error_list:sum = '{} {}'.format(sum, i)error.set(len(error_list))errors.set(sum)grade.set(true*10)grades.set(str((round(true/12,2))*100)+"%")def click():print("点击了一次")
def Print():#输入的文件名file_name='gx的口算习题.docx'file=open(file_name,'w')Write=''for i in range(1,13):quest=eval("question"+str(i))Write=quest.get()+'\n'print(Write)file.write(Write)file.close()def Print2():file_name = 'gx的指定口算习题.docx'file = open(file_name, 'w')Write_str = ''for i in range(1, 13):gx = eval("gg" + str(i))if gx.get()==1:quest = eval("question" + str(i))Write_str = quest.get() + '\n'print(Write_str)file.write(Write_str)file.close()
def Print3():global error_listfile_name = 'gx的错误口算习题报告.docx'file = open(file_name, 'w')Write_str = ''for i in range(13):if error_list[i]!=0:Write_str = eval("qustion"+str(error_list[i])).get() + '\n'file.write(Write_str)file.close()menubar = tk.Menu(window)
window.config(menu=menubar)
filemenu = tk.Menu(menubar, tearoff=0)
filemenu2 = tk.Menu(menubar, tearoff=0)
menubar.add_cascade(label='文件', menu=filemenu)
menubar.add_cascade(label='打印', menu=filemenu2)
filemenu.add_command(label='登录', command=click())
filemenu.add_command(label='关闭填写', command=window.quit)
filemenu2.add_cascade(label="输出word",command=Print)
filemenu2.add_cascade(label="指定题目输出word",command=Print2)
# 放置框架# 标题模块
frame1 = tk.Frame(window, bg='MediumTurquoise', bd=4)
# 答题类型
frame2 = tk.LabelFrame(window, text='答题类型', padx=5, pady=1, bd=5)
# 答题区域
frame5 = tk.Frame(window, bg='LightSkyBlue', bd=40, height=280)
# 选择打印题目
frame8 = tk.LabelFrame(window, text='选择打印题目', pady=1, bg='LightSeaGreen', bd=5)
#提交答案
frame7 = tk.LabelFrame(window, text='提交答案', pady=1, bg='LightGreen', bd=5)
#成绩报告
frame4 = tk.LabelFrame(window, text='成绩(共十二题,每题10分 满分120分)', pady=1, bg='LightSeaGreen', bd=5)
#错误报告
frame6 = tk.LabelFrame(window, text='错误报告', pady=5, bg='LightYellow', bd=5)frame1.grid(row=0, pady=10, sticky=tk.W + tk.E)
frame2.grid(row=1, padx=5, sticky=tk.W)
frame4.grid(row=5, pady=10, sticky=tk.W + tk.E)
frame5.grid(row=2, pady=10, sticky=tk.W + tk.E)
frame6.grid(row=6, pady=10, sticky=tk.W + tk.E)
frame7.grid(row=4, pady=10, sticky=tk.W + tk.E)
frame8.grid(row=3, pady=10, sticky=tk.W+tk.E)g1 = tk.Checkbutton(frame8, text="1",textvariable=gg1).grid(row=1, column=0, padx=2)
g2 = tk.Checkbutton(frame8, text="2",textvariable=gg2 ).grid(row=1, column=1, padx=2)
g3 = tk.Checkbutton(frame8, text="3",textvariable=gg3 ).grid(row=1, column=2, padx=2)
g4 = tk.Checkbutton(frame8, text="4" ,textvariable=gg4).grid(row=1, column=3, padx=2)
g5 = tk.Checkbutton(frame8, text="5",textvariable=gg5 ).grid(row=1, column=4, padx=2)
g6 = tk.Checkbutton(frame8, text="6" ,textvariable=gg6).grid(row=1, column=5, padx=2)
g7 = tk.Checkbutton(frame8, text="7",textvariable=gg7 ).grid(row=1, column=6, padx=2)
g8 = tk.Checkbutton(frame8, text="8",textvariable=gg8 ).grid(row=1, column=7, padx=2)
g9 = tk.Checkbutton(frame8, text="9" ,textvariable=gg9).grid(row=1, column=8, padx=2)
g10 = tk.Checkbutton(frame8, text="10",textvariable=gg10 ).grid(row=1, column=9, padx=2)
g11 = tk.Checkbutton(frame8, text="11",textvariable=gg11 ).grid(row=1, column=10, padx=2)
g12 = tk.Checkbutton(frame8, text="12",textvariable=gg12 ).grid(row=1, column=11, padx=2)colors = ['red', 'green', 'light blue', 'yellow']tk.Label(frame5, width=10, bg='Honeydew', text='1+3=', textvariable=question1).grid(row=0, column=0,padx=5, pady=10)
tk.Entry(frame5, font="Arial 12", width=3, bg='White',textvariable=answer1).grid(row=0, column=1, padx=5,pady=10)tk.Label(frame5, width=10, bg='Honeydew', text='1+3=', textvariable=question2).grid(row=0, column=2, padx=5, pady=10)
tk.Entry(frame5, font="Arial 12", width=3, bg='White',textvariable=answer2).grid(row=0, column=3, padx=5, pady=10)tk.Label(frame5, width=10, bg='Honeydew', text='1+3=', textvariable=question3).grid(row=0, column=4, padx=5, pady=10)
tk.Entry(frame5, font="Arial 12", width=3, bg='White',textvariable=answer3).grid(row=0, column=5, padx=5, pady=10)tk.Label(frame5, width=10, bg='Honeydew', text='1+3=', textvariable=question4).grid(row=1, column=0, padx=5, pady=10)
tk.Entry(frame5, font="Arial 12", width=3, bg='White',textvariable=answer4).grid(row=1, column=1, padx=5, pady=10)
tk.Label(frame5, width=10, bg='Honeydew', text='1+3=', textvariable=question5).grid(row=1, column=2, padx=5, pady=10)
tk.Entry(frame5, font="Arial 12", width=3,bg='White',textvariable=answer5).grid(row=1, column=3, padx=5, pady=10)
tk.Label(frame5, width=10,bg='Honeydew', text='1+3=', textvariable=question6).grid(row=1, column=4, padx=5, pady=10)
tk.Entry(frame5, font="Arial 12", width=3, bg='White',textvariable=answer6).grid(row=1, column=5, padx=5, pady=10)tk.Label(frame5, width=10, bg='Honeydew', text='1+3=', textvariable=question7).grid(row=2, column=0, padx=5, pady=10)
tk.Entry(frame5, font="Arial 12", width=3, bg='White',textvariable=answer7).grid(row=2, column=1, padx=5, pady=10)
tk.Label(frame5, width=10, bg='Honeydew', text='1+3=', textvariable=question8).grid(row=2, column=2, padx=5, pady=10)
tk.Entry(frame5, font="Arial 12", width=3, bg='White',textvariable=answer8).grid(row=2, column=3, padx=5, pady=10)
tk.Label(frame5, width=10, bg='Honeydew', text='1+3=', textvariable=question9).grid(row=2, column=4, padx=5, pady=10)
tk.Entry(frame5, font="Arial 12", width=3, bg='White',textvariable=answer9).grid(row=2, column=5, padx=5, pady=10)tk.Label(frame5, width=10, bg='Honeydew', text='1+3=', textvariable=question10).grid(row=3, column=0, padx=5, pady=10)
tk.Entry(frame5, font="Arial 12", width=3, bg='White',textvariable=answer10).grid(row=3, column=1, padx=5, pady=10)
tk.Label(frame5, width=10, bg='Honeydew', text='1+3=', textvariable=question11).grid(row=3, column=2, padx=5, pady=10)
tk.Entry(frame5, font="Arial 12", width=3, bg='White',textvariable=answer11).grid(row=3, column=3, padx=5, pady=10)
tk.Label(frame5, width=10, bg='Honeydew', text='1+3=', textvariable=question12).grid(row=3, column=4, padx=5, pady=10)
tk.Entry(frame5, font="Arial 12", width=3, bg='White',textvariable=answer12).grid(row=3, column=5, padx=5, pady=10)# 放置lable--frame1
name1 = tk.Label(frame1, text="欢迎来到口算生成系统", bd=10, font=('Arial 12 bold'), width=15, height=2, bg='MediumTurquoise',anchor="center")name1.grid(row=0, column=100, padx=150, sticky=tk.E)# 放置lable2--frame2
r1 = tk.Radiobutton(frame2, text="混合题目", value="flex", variable=q_type).grid(row=1, column=0, padx=5)
r2 = tk.Radiobutton(frame2, text="加法", value="jia", variable=q_type).grid(row=1, column=1, padx=5)
r3 = tk.Radiobutton(frame2, text="减法", value="jian", variable=q_type).grid(row=1, column=2, padx=5)
r4 = tk.Radiobutton(frame2, text="乘法", value="cheng", variable=q_type).grid(row=1, column=3, padx=5)
r5 = tk.Radiobutton(frame2, text="除法", value="chu", variable=q_type).grid(row=1, column=4, padx=5)
r6 = tk.Button(frame2, text="逐一生成", bg='DeepSkyBlue', command=create2).grid(row=2, column=1, padx=6)
r7 = tk.Button(frame2, text="开始生成", bg='DeepSkyBlue', command=create).grid(row=2, column=2, padx=6)score = tk.Label(frame4, bg='MintCream', text='成绩:').grid(row=0, column=2, padx=8, pady=2)
score_entry = tk.Entry(frame4, bg='Honeydew', bd=6, width=10, textvariable=grade).grid(row=0, column=3, padx=2)
score2 = tk.Label(frame4, bg='MintCream', text='正确率:').grid(row=0, column=4, padx=8, pady=12)
score2_entry = tk.Entry(frame4, bg='Honeydew', bd=6, width=10, textvariable=grades).grid(row=0, column=5, padx=2)
r7 = tk.Button(frame4, text="打印错误报告", bg='red').grid(row=0, column=6, padx=6)score = tk.Label(frame6, bg='MintCream', text='错误题目数量:').grid(row=0, column=2, padx=8, pady=2)
score_entry = tk.Entry(frame6, bg='Honeydew', bd=6, width=5,textvariable=error).grid(row=0, column=3, padx=2)
score2 = tk.Label(frame6, bg='MintCream', text='错误题号').grid(row=0, column=4, padx=8, pady=12)
score2_entry = tk.Entry(frame6, bg='Honeydew', bd=6, width=30,textvariable=errors).grid(row=0, column=5, padx=2)r6 = tk.Button(frame7, text="提交答案", bg='MediumSpringGreen',command=submit).grid(row=0, column=1, padx=6)time = tk.Label(frame7, bg='MintCream', text='考试时间为:').grid(row=0, column=2, padx=8, pady=12)
time_entry = tk.Label(frame7, bg='Honeydew', bd=6, width=30,textvariable=Date).grid(row=0, column=3, padx=2)window.mainloop()

结尾:
我的print2和3方法有bug 其他木问题

python的口算自动生成系统(GUI界面编程)相关推荐

  1. bs模型Nd怎么用计算机算,BS模式的下试卷自动生成系统的设计与实现

    B/S模式的下试卷自动生成系统的设计与实现 信息与计算科学06101班马德岭 指导老师:庄曰华 摘要:教学评价是教学工作的一个重要环节,通常的教学评价方式多为通过试卷进行考试,因而试卷的质量将直接影响 ...

  2. 基于深度学习的对联自动生成系统

    对联自动生成系统 1.项目目标 设计一个基于深度学习的对联生成系统.最终结果可以是一个简单的界面,在界面中,我输入一句上联,通过点击相应按钮,系统生成相应下联并显示出来. 2.国内外相关工作 对联是属 ...

  3. python图书馆管理系统实验报告_基于Python的图书馆业务报表自动生成研究

    龙源期刊网 http://www.qikan.com.cn 基于 Python 的图书馆业务报表自动生成研 究 作者:辛海滨 来源:<电脑知识与技术> 2016 年第 27 期 摘要:针对 ...

  4. 汉语著者号自动生成系统的设计与实现

    汉语著者号自动生成系统的设计与实现 李 华 (成都大学图书馆 成都610106) [摘要] 以著者的四角号码为取号依据,设计编写"汉语著者号自动生成系统",对该系统测试后发现,编 ...

  5. 基于深度学习的春联自动生成系统 实验记录

    基于深度学习的春联自动生成系统主要分成两个方面: 1.数据集构造 2.模型搭建 本文将主要从这两个方面展开,之后将介绍实验结果和结果分析. 目录 一.[数据集构造] 1.分词方面 2.编码方面 3.数 ...

  6. 清华大学矣晓沅:“九歌”——基于深度学习的中国古典诗歌自动生成系统

    授权自AI科技大本营(ID:rgznai100) 本文共2714字,建议阅读6分钟. 本文为你介绍清华自然语言处理与社会人文计算实验室的自动作诗系统--"九歌"及其相关的技术方法和 ...

  7. python list转字符串_我用python写了个自动生成给文档生成索引的脚本!懒人智慧...

    我用 python 写了一个自动生成索引的脚本 简介:为了刷算法题,建了一个 GitHub仓库: PiperLiu / ACMOI_Journey ,记录自己的刷题轨迹,并总结一下方法.心得.想到一个 ...

  8. java 试卷自动生成_基于JAVA的试题自动生成系统 - WEB源码|JSP源码/Java|源代码 - 源码中国...

    压缩包 : 试卷自动生成系统.rar 列表 试卷自动生成系统/.classpath 试卷自动生成系统/.project 试卷自动生成系统/bin/Db/Sql.class 试卷自动生成系统/bin/f ...

  9. 「懒惰的美德」我用 python 写了个自动生成给文档生成索引的脚本

    我用 python 写了一个自动生成索引的脚本 简介:为了刷算法题,建了一个 GitHub仓库:PiperLiu / ACMOI_Journey,记录自己的刷题轨迹,并总结一下方法.心得.想到一个需求 ...

  10. Python 自动化教程(5) : 自动生成Word文件

    系列教程: Python 自动化教程(1) 概述,第一篇 Excel自动化 Python 自动化教程(2) : Excel自动化:使用pandas库 Python 自动化教程(3) : 自动生成PPT ...

最新文章

  1. [计算机网络] C++模拟telnet登陆SMTP服务发送邮件过程
  2. Java操作MongoDB代码示例
  3. Uva 11600 期望DP
  4. 【干货】吴甘沙:你是数据,我即生意
  5. TensorFlow2-高层API接口Keras
  6. IntelliJ IDEA 使用随笔
  7. resultmap拿不到数据_阿里巴巴国际站每日电商运营工作数据表格
  8. Visual Studio Code快速删除空行及几个常用快捷键总结
  9. C++新特性探究(三):=default、=delete
  10. 《团队-科学计算器-项目进度》
  11. eclispe 下载与安装
  12. .mcs与.bin文件格式有什么区别?
  13. 奔图 Pantum M6550 打印机驱动
  14. Matlab中CVX工具箱使用
  15. 米家扫地机器人按键没反应_好到没理由不推荐 米家扫地机器人评测
  16. shell while循环退出
  17. 测量网页元素的大小和间距的利器
  18. English 介词
  19. yigo基础学习笔记5_yigo二次开发配置
  20. 北大学霸隐居20年,王青松花光350万后,如今怎么样了?

热门文章

  1. 关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  2. 调频连续波雷达基本原理(1)-测距原理详解
  3. springboot集成Mybatis返回的值为null
  4. TTL和RS232之间的详细对比转
  5. idea项目启动报错 Failed to parse configuration class [com.epoint.FrameWebApplication]
  6. nginx-ingress-controller开启modsecurity
  7. 如何将qlv格式转换为mp4格式?怎么将qlv的文件然后转换成mp4视频?
  8. 在你的ipad上使用Vscode撸代码(快速操作向)
  9. Keil--视力保护--背景设置
  10. 微信公众号H5页面缓存问题(微信缓存了 index.html 入口)