Python期末程序设计项目
Python程序设计项目
一、项目功能说明(文字)
这是一个能实现成绩统计功能,有登录界面,主界面,消息对话框。用三个文本框接收高数英语Python三个科目成绩,并计算平均分,还有异常处理,和输入非数字弹出请输入数字对话框。
另外还增加了frame框架窗口和功能。
二、项目应用技术、第三方库
项目主要运用python语言实现,运用到的python第三方库tkinter,tkinker.messagebox,tk.frame,turtle库。
三、软件使用说明(操作步骤,功能界面要截图)
1.执行程序出现
2.输入用户名和密码登录
3.登录成功
当输入分数范围超出0-100时候会弹出异常
当输入非数字的时候
四、程序设计流程图(一个整体功能的流程图,每个功能都要有一个具体流程图)
五、源代码
import tkinter as tk
import tkinter.messageboxusername = 'zhansan'
passwd = '123456't = Falsedef login():window = tk.Tk()window.title('登录')window.geometry("400x200")tk.Label(window, text='用户名: ').place(x=50, y=40)tk.Label(window, text='密码: ').place(x=50, y=80)var_usr_name = tk.StringVar() # 定义变量类型entry_usr_name = tk.Entry(window,textvariable=var_usr_name) # Entry单行输入框,定义输入框的输入变量类型entry_usr_name.place(x=160, y=40) # 输入框的位置坐标var_usr_pwd = tk.StringVar()entry_usr_pwd = tk.Entry(window, textvariable=var_usr_pwd, show='*') # 密码输入框的定义,对外显示时用星号代替entry_usr_pwd.place(x=160, y=80) # 密码输入框位置def usr_login(): # 登录函数global username, passwdif var_usr_name.get() == username and var_usr_pwd.get() == passwd: # 判断从用户名、密码输入框获取到的内容是否分别等于全局变量中定义的用户名和密码print(2)window.destroy() # 销毁当前的窗口print(1)global t # 引用全局变量tt = Trueelse:tkinter.messagebox.showinfo('提示', '用户名或密码错误') # 如果不等于定义的用户名和密码,用消息框显示提示btn_login = tk.Button(window, text='Login', command=usr_login) # 定义登录按钮btn_login.place(x=180, y=120) # 登录按钮的位置window.mainloop() # 循环监听窗口事件flag = Falsedef main():def is_number(s):try:float(s) # 对传入变量进行强制类型转换return Trueexcept ValueError:passtry:import unicodedataunicodedata.numeric(s) # 把数字类型字符串转换成浮点数return Trueexcept (TypeError, ValueError):passreturn Falseclass InputError(Exception): # 继承自基类Exceptiondef __init__(self, ErrorInfo):tkinter.messagebox.showinfo('错误', ErrorInfo) # 如果输入类型不合适,用消息框提示错误self.errorinfo = ErrorInfodef __str__(self):return self.errorinfoaverage = 0sum = 0window1 = tk.Tk() # 实例化主窗口window1.title('成绩统计') # 设置主窗口标题window = tk.Frame(window1) # 在屏幕上显示一个矩形,用作窗口容器window.pack(padx=100, pady=50) # 窗口的内部布局参数调整# grid栅格布局,row:行数, column:列数# Label标签控件tk.Label(window, text='高数: ').grid(row=0, column=0)tk.Label(window, text='英语: ').grid(row=1, column=0)tk.Label(window, text='python: ').grid(row=2, column=0)# 定义回调函数,判断输入的内容是否是数字并且数字范围是否在0-100之间def callback(*args):global flagif not flag:flag = Truefor i in range(3):s = score_l[i].get()print(s)if not (is_number(s) or s == ''):score_l[i].set('')raise InputError('请输入数字!')if s != '':if float(s) > 100:score_l[i].set('')raise InputError('分数范围为0-100!')flag = Falsescore_l = []for i in range(3):score_l.append(tk.StringVar())tk.Entry(window, textvariable=score_l[i]).grid(row=i, column=1, pady=10, padx=0, ipadx=10) # label后面批量添加输入框score_l[i].trace("w", callback) # 为输入框添加回调函数# 累加计算总成绩def calculate_total_score():sum = 0for i in range(3):score = score_l[i].get()score = int(score)sum += scorevar_sum.set(sum) # 总成绩窗口赋值为计算输出的总成绩# 定义计算总分的按钮并根据栅格布局放到对应的位置btn_all = tk.Button(window, text='计算总分', command=calculate_total_score)btn_all.grid(row=3, column=0, pady=10)# 定义总成绩输出的标签位置var_sum = tk.StringVar()tk.Label(window, textvariable=var_sum).grid(row=3, column=1)# 计算平均分函数,总分/3def calculate_average_score():sum = 0for i in range(3):score = score_l[i].get()score = int(score)sum += score# var_sum.set(sum)average = sum / 3var_average.set(average) # 平均分位置赋值为平均分的值# 定义计算平均分的按钮,并放到对应的位置btn_average = tk.Button(window, text='计算平均分', command=calculate_average_score)btn_average.grid(row=4, column=0, pady=10)# 给出平均分标签及位置var_average = tk.StringVar()tk.Label(window, textvariable=var_average).grid(row=4, column=1)# main窗口的事件循环监听window.mainloop()if __name__ == '__main__':login()if t: # 通过t的值来判断是否登陆成功main()
Python期末程序设计项目相关推荐
- python语言程序设计项目_《Python语言程序设计》项目报告书Word版
<<Python语言程序设计>项目报告书Word版>由会员分享,可在线阅读,更多相关<<Python语言程序设计>项目报告书Word版(8页珍藏版)>请 ...
- java 项目 q a 表设计_《JAVA程序设计项目案例训练》期末试卷(A卷)..doc
献给Java专业期末考试复习的同学 希望你们能考个好成绩 2010-2011学年第二学期哈尔滨华夏计算机职业技术学院期末考试 JAVA程序设计项目案例训练试题(A卷) 总分题号一二三四核分人题分402 ...
- python期末考试试题
python期末考试试题汇总 学习 2020-4-105589阅读 · 98喜欢 · 11评论 想个昵称憋一天 粉丝:370文章:31 关注 6.for i in range(2,n): if n%i ...
- 下列不是python对文件的读操作方法是-小猿圈python之python期末考试测试题(一)...
原标题:小猿圈python之python期末考试测试题(一) 又快临近期末考试了,小伙伴们是不是又开始焦虑了呢?挂科怎么办?如果很幸运看到小编的文章,你就偷着乐吧,小编总结出:一般python期末考试 ...
- 上海交通大学python期末考试样题加解析_上海交通大学python期末考试样题加解析...
<上海交通大学python期末考试样题加解析>由会员分享,可在线阅读,更多相关<上海交通大学python期末考试样题加解析(7页珍藏版)>请在人人文库网上搜索. 1.升够上伙归 ...
- Python—期末考试模拟训练题
Python-期末考试模拟训练题 2019.12.19日 输出一行Hello,world. print("Hello,world.") 输出10行带标号的Hello,world. ...
- 大一python期末考试难吗_python期末考试复习
期末考试复习 补修的python跟着大一一起学,考试肯定不会出难,于是就敲了一些代码,把他们放到博客上,来记录一下 代码都是一段一段的,且python代码不是很多,所以我都写到了一个文件里,作为练习S ...
- Python期末总结
Python期末总结 第二章 Python基础 2.1代码格式 良好的代码格式可提升代码的可读性 注释 单行注释以"#" 开头,用于说明当前行或之后代码的功能.单行注释既可 ...
- Python期末复习题:流程控制
Python期末复习题:流程控制 文章目录 Python期末复习题:流程控制 一.成绩转换 二.Leibniz公式计算圆周率 三.输出回文素数 四.输出该日期是这一年的第几天 一.成绩转换 请编写一个 ...
- 通常我们将python语言程序保存在一个后缀_【单选题】通常我们将Python语言程序保存在一个后缀为( )的文件中。...
问题:[单选题]通常我们将Python语言程序保存在一个后缀为( )的文件中. 更多相关问题 谢某对某公安局以其实施盗窃为由处以15日拘留的处罚不服,向法院提起行政诉讼.该局向法院提供的证 下列关于刑 ...
最新文章
- 格式化测试数据,组装用于插入表中的sql语句
- solr6 mysql_solr6 从mysql上导入数据
- 显示网格_快速制图软件 Edraw Max教程:Edraw Max怎么显示出网格线?
- 没有内存条电脑能开机吗_电脑没内存条能开机吗?这位朋友说他的电脑没内存条都用几年了!...
- .NET Core 中导入导出Excel
- Bitmap添加文字水印
- python、setuptools 、pip
- matlab根据数值大小聚类,[matlab聚类分析]请教高手:用matlab做聚类分析,节点数多于30个怎么画聚类图啊?...
- app页面html制作工具,app页面设计制作软件(最好用的6款设计软件)
- 闪存类型测试软件,一芯U盘闪存测试工具(DieSorting)
- 逍遥魔兽手动打开mysql_逍遥魔兽gm命令使用
- 计算机小喇叭找不到,电脑右下角小喇叭不见了怎么办?
- 内存管理-之启动-基于linux3.10
- 怎么把字母缩小当符号_必收藏干货!谭编教你轻松输入这些论文中的特殊符号:...
- Base64 密码加密解密
- html打印图片不显示不全,Word里图片显示全打印不全是怎么回事
- matlab 采样点数,信号频率、采样频率、频率分辨率以及FFT信号补零
- 关于mysql百万100W数据查询优化
- mysql支持kv_阿里云推出兼容Redis的KV数据库 有三大优势
- 安装配置Influxdb