暑假太无聊了怎么办,直接手搓一个极致低配版的评委系统,历练一下自己,嘻嘻~
一、准备步骤
1.创建文件夹以及文件
很简单,先在桌面创建一个文件夹,我取名为DEMO(个人随意),然后在文件夹中创建4个文件
:管理员、歌手、评委、主界面
如图所示,就这么简单
2.查看所需环境(Python或者Pycharm)
然后看看自己有没有所需环境(Python或者Pycharm),没有就下载,推荐是Pycharm,功能还是比较强大的,如果用不习惯的话,Python也行,不过版本要在3.11以上,避免后续编写时所需要的库无法使用
如果还要使用数据库来让自己的系统看起来更牛,就需要使用数据库软件,详情可见我的博客
Python数据库应用-优快云博客 里面有相应软件下载(都是适合新手宝宝哒~)
当这些准备步骤修完成的时候, 就可以开始准备需要的第三方库啦!
3.下载所需的第三方库
因为是项目实战,所以所需的第三方库会比较多,这里我就针对本次实战项目所需可能会需要的第三方库全部列出来,仅供参考,列出来的库也不会全部使用在项目中(或许会)
Tkinter | 简易图形化界面,对初学者很友好 |
Subprocess | 用于打开文件,在主界面文件中会用到 |
Sqlite3 | 用于链接数据库,嫌麻烦可以直接excel |
Pandas | 用于数据的读取和写入(excel或CSV格式的文件) |
Openyxl | 专门用于excel的数据写入(Excel 2010版) |
Os | 与操作系统交互的模块 |
Pyinstaller | 用于将写好的.py文件打包成可执行的.exe文件 |
Cx_Freeze | |
Numpy | 用于数值计算和数组操作 |
matplotlib | 用于绘制图形,更好分析数据 |
seaborn |
至于为什么会把Pyinstaller和Cx_Freeze这个两个库写进来,纯粹就是让身边没有环境的小伙伴也可以体验,绝对不是为了装*啊,我可没有啊
关于他俩的用法,稍后我就只介绍Pyinstaller,不为什么,因为另一个我不会
好了不闹了,我是觉得是要这么些库,少的话在补充
二、正式编写文件
做完前面的步骤之后,就可以正式开始编写文件啦!
我们就先从简单的开始,先把主界面完成
1.主界面
主界面一般都很简单,大家应该见过类似的登录界面,不过我给他简化了,直接删除登录环节,来到选择界面
长这样,过于简陋了,不过没关系,咱该有的功能咱都有啊
我觉得这个基本上都会吧,place慢慢调,所以直接展示源代码
from tkinter import *
import subprocess
from tkinter import messagebox
w = Tk()
w.title('后台管理系统')
w.geometry('500x550')
w.resizable(False, False)
Label(w, text='后台管理系统', font=('微软雅黑', 30)).place(x=125, y=10)
l = Label(w, text='当前用户:未登录', font=15)
l.place(x=160, y=75)
s = ''
'''
此处为函数部分,目前就了解框架
'''
Button(w, text='评委登录', width=35, height=2, command=Judge).place(x=125, y=145)
Button(w, text='歌手登录', width=35, height=2, command=Singer).place(x=125, y=215)
Button(w, text='管理员登录', width=35, height=2, command=Administrator).place(x=125, y=285)
Button(w, text='关于', width=35, height=2, command=show_about_info).place(x=125, y=355)
Label(w, text=' version: 1.0.0 ').place(x=200, y=460)
w.mainloop()
给对tkinter还不是很熟悉的新手宝宝一个提示,上面的代码不能直接复制哦~因为Button()后面的属性设置璃填写了command属性,这个是绑定函数的,如果没有函数的话会报错哦~
框架写完之后,咱们要实现的主要功能就是单击按钮之后,打开对应的窗口啦!
这时候就有小盆友就会想到啦文件操作吧,直接一个os.system('······'),可惜啊,这个代码虽然能用,但是不够灵活,所以我推荐使用Subprocess这个库,嘎嘎好用嗷!
OK!接下来就是一段比较烧脑的过程啦!--------写函数
因为是主界面,使用的函数虽然有4个,但都还算简单,唯一的难点就是这里就开始使用Subprocess函数啦!
有关Subprocess函数的部分还是比较复杂的,再次呢,我就只介绍我所需要的一种方法
subprocess.run()这个函数
函数详解:
subprocess.run(args, *, stdin=None, input=None, stdout=None, stderr=None, capture_output=False, shell=False, cwd=None, timeout=None, check=False, encoding=None, errors=None, text=None)
args | 要执行的命令和参数,通常是一个列表。例如 ['ls', '-l'] |
|
分别指定标准输入、标准输出和标准错误的处理方式 可以是 文件对象等 |
capture_output | 如果为 True ,则自动将 stdout 和 stderr 捕获。与分别设置 stdout=subprocess.PIPE 和 stderr=subprocess.PIPE 效果相同 |
shell | 如果为 在 Windows 上, 在其他操作系统上,使用 |
cwd | 指定运行命令的工作目录 |
timeout | 设置命令执行的超时时间(以秒为单位)。如果超时,会抛出 TimeoutExpired 异常 |
check | 如果为 True ,并且进程以非零状态码退出,将抛出 CalledProcessError 异常 |
encoding | 如果指定了 以便将输入和输出的字节数据转换为字符串 |
errors | 当编码或解码出现错误时的处理方式,例如 'ignore' 、 'replace' 等 |
(以上来源于我的书本,有误请指正,谢谢~)
当然,我们可用不了这么许多,只是简单的文件调用而已,所以,我们的代码就会变得非常简单啦!
首先,我们需要建立一个file,用于指定路径,这个file就是我们需要打开的文件路径
file = r'C:\Users\29507\Desktop\DEMO\歌手系统.py'
就比如像这样
然后就是函数部分
subprocess.run(["python", file], creationflags=subprocess.CREATE_NO_WINDOW)
实际上,file部分是可以直接写进run函数里面的,不过内样子看起来很长,而且很容易写错,为了方便简介,就分开写了,至于后面的creationflags部分,就是用于创建新进程的标志,后面的subprocess.CREATE_NO_WINDOW 这个标志的作用是在创建新进程时,使其不显示新的控制台窗口,这样就会让它安静的在后台运行,而不弹出新的窗口干扰用户界面。
OK!函数部分就到此结束啦,让我们稍微整合一下,就可以得到这样的代码
def Singer(): # 歌手系统
global s
file = r'C:\Users\29507\Desktop\DEMO\歌手系统.py'
subprocess.run(["python", file], creationflags=subprocess.CREATE_NO_WINDOW)
s = '歌手'
l.config(text='当前用户:' + s)
def Administrator(): # 管理员系统
global s
file = r'C:\Users\29507\Desktop\DEMO\管理员系统.py'
subprocess.run(["python", file], creationflags=subprocess.CREATE_NO_WINDOW)
s = '管理员'
l.config(text='当前用户:' + s)
def Judge(): # 评委系统
global s
file = r'C:\Users\29507\Desktop\DEMO\评委系统.py'
subprocess.run(["python", file], creationflags=subprocess.CREATE_NO_WINDOW)
s = '评委'
l.config(text='当前用户:' + s)
def show_version_info(): # 版本信息
s = '版本信息:1.0.0\n作者:林_梦璃\n编写时间:2024-07-01 08:13:46\n完成日期:2024-07-26 15:13:46\n发布平台:优快云'
messagebox.showinfo('版本信息', s)
然后就可以将代码融合进之前的框架中啦,所以,主界面的完整代码就OK啦!
from tkinter import *
import subprocess
from tkinter import messagebox
w = Tk()
w.title('后台管理系统')
w.geometry('500x550')
w.resizable(False, False)
Label(w, text='后台管理系统', font=('微软雅黑', 30)).place(x=125, y=10)
l = Label(w, text='当前用户:未登录', font=15)
l.place(x=160, y=75)
s = ''
def Singer(): # 歌手系统
global s
file = r'C:\Users\29507\Desktop\DEMO\歌手系统.py'
subprocess.run(["python", file], creationflags=subprocess.CREATE_NO_WINDOW)
s = '歌手'
l.config(text='当前用户:' + s)
def Administrator(): # 管理员系统
global s
file = r'C:\Users\29507\Desktop\DEMO\管理员系统.py'
subprocess.run(["python", file], creationflags=subprocess.CREATE_NO_WINDOW)
s = '管理员'
l.config(text='当前用户:' + s)
def Judge(): # 评委系统
global s
file = r'C:\Users\29507\Desktop\DEMO\评委系统.py'
subprocess.run(["python", file], creationflags=subprocess.CREATE_NO_WINDOW)
s = '评委'
l.config(text='当前用户:' + s)
def show_version_info(): # 版本信息
s = '版本信息:1.0.0\n作者:林_梦璃\n编写时间:2024-07-01 08:13:46\n完成日期:2024-07-26 15:13:46\n发布平台:优快云'
messagebox.showinfo('版本信息', s)
Button(w, text='评委登录', width=35, height=2, command=Judge).place(x=125, y=145)
Button(w, text='歌手登录', width=35, height=2, command=Singer).place(x=125, y=215)
Button(w, text='管理员登录', width=35, height=2, command=Administrator).place(x=125, y=285)
Button(w, text='关于', width=35, height=2, command=show_version_info).place(x=125, y=355)
Label(w, text=' version: 1.0.0 ').place(x=200, y=460)
w.mainloop()
好啦!主界面已经完成啦,接下来就是三块难啃的硬骨头啦!
2.管理员系统
总所周知啊,管理员的权限嘎嘎多,嘎嘎高嗷,所以它也是最难写的,所以我们就先啃这块,反正我自己写完花了一个星期差不多,代码多了就很容易出bug,全文共163行,融合了很多的知识点,搬好小板凳,我们要开始啦!
还是老规矩,咱先得分析,管理员系统能干啥,先得给框架写好,这是我的版本,各位大佬觉得不咋地的话尽情修改
首先还是登录页面
略微有点草率
登录成功的messagebox弹窗
然后就是功能啦,还是比较比较简略