Python项目实战

暑假太无聊了怎么办,直接手搓一个极致低配版的评委系统,历练一下自己,嘻嘻~

一、准备步骤

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']

stdin 

stdout 

stderr

分别指定标准输入、标准输出和标准错误的处理方式

可以是 subprocess.PIPE (将数据通过管道传递)、 subprocess.DEVNULL (忽略)、

文件对象等

capture_output 如果为 True ,则自动将 stdout 和 stderr 捕获。与分别设置 stdout=subprocess.PIPE 和 stderr=subprocess.PIPE 效果相同
shell

如果为 True ,则在 shell 中执行命令。

在 Windows 上,shell=True 会根据 COMSPEC 环境变量的值来决定使用哪个 shell 。

在其他操作系统上,使用 /bin/sh

cwd 指定运行命令的工作目录
timeout 设置命令执行的超时时间(以秒为单位)。如果超时,会抛出 TimeoutExpired 异常
check 如果为 True ,并且进程以非零状态码退出,将抛出 CalledProcessError 异常
encoding

如果指定了 text=True 或 input 是一个字符串,用于指定编码方式,

以便将输入和输出的字节数据转换为字符串

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弹窗

 然后就是功能啦,还是比较比较简略

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值