前几天做了一个代码框的管理系统,我这几天抽空把他做成了图形化界面的样子,利用的是Tkinter。准备工作就是建立数据库可以参考之前的博客:python mysql学生成绩管理系统
1 首先我写了一个登陆界面类 login:
这个界面就是实现用户的登录,以及登陆后软件界面的显示以及本界面的关闭,难的就是布局的问题,我也是第一次接触,艺术细胞确是不够
from tkinter import *
import tkinter.font as tkFont
import tkinter.messagebox
import tkinter as tk
from menu import Menu1
class login:
def exitmenu(self):
result = tkinter.messagebox.askokcancel(title='退出系统', message='您确定要退出系统吗?')
if result==True:
self.root.destroy()
else:
pass
pass
def __init__(self):
self.root = Tk()
self.root.title('学生信息管理系统')
self.text_user.place(x=110, y=250)
def log(self):
f.text_user.get()
password=self.text_password.get()
if dmin" nd password=="123":
tkinter.messagebox.showwarning(title='提示:', message='登录成功')
self.root.destroy()
men Menu1()
# menu1.sqlshow()
# while 1:
# print(1)
# menu1.sqlshow()
# pass
# pass
pass
else:
tkinter.messagebox.showwarning(title='提示:', message='登录失败')
self.text_user.delete(0,'end')
self.text_pasrd.delete(0,'end')
print("error")
pass
pass
pass
if __name__ == '__main__':
2 然后是软件的操作类 Menu1:
这个里面就是实现成绩管理的增加 删除等操作,然后难的就是用treeview显示数据,我这个把显示数据的函数sqlshow写进了构造函数中,其实也有一点bug,因为数据的显示要从数据库中拿到数据,但我们想实现的是每次一增加或删除数据,treeview会实时更新,但我本来想用信号来解决,后来还是没有精力了,导致每次添加完数据还是需要一个更新按钮调用sqlshow函数来实现
from tkinter import *
import tkinter.font as tkFont
import tkinter.messagebox
import tkinter as tk
from tkinter import ttk
import pymysql
from change import Change
from insert import Insert
from shan import A_Del
3 添加学生的类:Insert
这个里就是涉及布局和数据库的事情,不是很难
from tkinter import *
import tkinter.font as tkFont
import tkinter.messagebox
import tkinter as tk
from tkinter import ttk
import pymysql
import menu
class Insert:
def __init__(self):
self.op = Tk()
self.op.title('增加界面')
self.op.geometry('600x590')
self.op.resizable(False, False)
Label(self.op, text='姓名:', font=('Verdana', 18)).place(x=50, y=30)
self.text_usermath.place(x=160, y=310)
Label(self.op, text='总成绩:', font=('Verdana', 18)).place(x=50, y=380)
self.text_userscore = Entry(self.op, width=25, bd=3, font=tkFont.Font(size=20), bg='Ivory')
消", font=tkFont.Font(size=25), width=9, bg="blue",command=self.cancel).place(x=400,y=460)
self.op.mainloop()
pass
def cha(self):
name = self.text_username.get()
db = pymysql.connect(host='localhost',
user='root',
password='333',
database='studentdb')
cursor = db.cursor()
tkinter.messagebox.showwarning(title='提示:', message='添加成功')
self.op.destroy()
pass
def cancel(self):
self.op.destroy()
pass
pass
if __name__ == '__main__':
r_insert=Insert()
4 修改类Change:
def cha(self):
while 1:
print("改变学生信息")
myname = self.text_username.get()
db = pymysql.connect(host='localhost',
user='root',
password='333',
database='studentdb')
cursor = db.cursor()
if myname == name12:
try:
sex = self.text_usersex.get()
snum = self.text_usernum.get()
chinese = self.text_userchinese.get()
chinese = int(chinese)
math = self.text_usermath.get()
math = int(math)
stotal = self.text_userscore.get()
stotal = int(stotal)
# 有问题解决不了
息成功" % (myname))
self.op.destroy()
break
except:
db.rollback()
print("error")
db.close()
break
else:
print("没有这个学生的信息,输入错误")
self.cancel()
break
pass
pass
pass
def cancel(self):
self.op.destroy()
pass
pass
if __name__ == '__main__':
r_change=Change()
5 删除类 A_Del:
from tkinter import *
import tkinter.font as tkFont
import tkinter.messagebox
import tkinter as tk
from tkinter import ttk
import pymysql
def cancel(self):
self.op.destroy()
pass
pass
if __name__ == '__main__':
r_del=A_Del()
6 显示按钮:
这个里面我写了2个函数,一个是清空treeview,一个就是sqlshow函数,因为不清空的话,每次数据显示会加上旧的数据
9 总结:
这个项目对初学者我觉得还是很有帮助的,其实不足的就是我想实现它增加一确定,然后treeview就更新,不用显示按钮了,做的很仓促,以后慢慢修改吧
完整代码加vx:zrchc123(有偿获取,白嫖就算了)