(Python)tkinter连接MySQL进行学生数据管理
要求界面格式
数据库表格格式
数据库内容
https://download.csdn.net/download/BangLiSang/12419609
我其实不想付费的,但是没搞懂怎么免费分享……
自己建立数据库也可以
代码
import pymysql
import tkinter as tk
from tkinter import ttk
import tkinter.messagebox
win = tk.Tk()
win.geometry('1000x800')
numLabel = tk.Label(win, text='学号:').grid(row=0,column=0)
numStringvar = tk.StringVar()
numEntry = tk.Entry(win, width=20, textvariable=numStringvar).grid(row=0, column=1)
nameLabel = tk.Label(win, text='姓名:').grid(row=1,column=0)
nameStringvar = tk.StringVar()
nameEntry = tk.Entry(win, width=20, textvariable=nameStringvar).grid(row=1, column=1)
sexLabel = tk.Label(win, text='性别:').grid(row=2,column=0)
sexStringvar = tk.StringVar()
sexEntry = tk.Entry(win, width=20, textvariable=sexStringvar).grid(row=2, column=1)
birLabel = tk.Label(win, text='出生时间:').grid(row=3,column=0)
birStringvar = tk.StringVar()
birEntry = tk.Entry(win, width=20, textvariable=birStringvar).grid(row=3, column=1)
zhuanyeLabel = tk.Label(win, text='专业:').grid(row=4,column=0)
zhuanyeStringvar = tk.StringVar()
zhuanyeEntry = tk.Entry(win, width=20, textvariable=zhuanyeStringvar).grid(row=4, column=1)
xuefenLabel = tk.Label(win, text='总学分:').grid(row=5,column=0)
xuefenStringvar = tk.StringVar()
xuefenEntry = tk.Entry(win, width=20, textvariable=xuefenStringvar).grid(row=5, column=1)
beizhuLabel = tk.Label(win, text='备注:').grid(row=6,column=0)
beizhuStringvar = tk.StringVar()
beizhuEntry = tk.Entry(win, width=20, textvariable=beizhuStringvar).grid(row=6, column=1)
def select():
xh = numStringvar.get()
connection = pymysql.connect('localhost', 'root', '123456', 'test_mysql')
cursor = connection.cursor()
if len(xh) == 0:
c = cursor.execute('select * from stu_mysql')
else:
print('select * from stu_mysql where 学号 like "%'+xh+'%"')
c = cursor.execute('select * from stu_mysql where 学号 like "%'+xh+'%"')
list_re = cursor.fetchall()
x = tree.get_children()
for item in x:
tree.delete(item)
for i in range(len(list_re)):
tree.insert('', i, text=i, values=(list_re[i][0], list_re[i][1], list_re[i][2], list_re[i][3], list_re[i][4], list_re[i][5], list_re[i][6]))
connection.close()
selectButton = tk.Button(win, text='查询', width=10, height=1,command=select).grid(row=7,column=0,pady=5)
def insert():
connection = pymysql.connect('localhost', 'root', '123456', 'test_mysql')
cursor = connection.cursor()
cursor.execute('insert into stu_mysql values ("%s","%s","%s","%s","%s","%s","%s")' % (numStringvar.get(), nameStringvar.get(), sexStringvar.get(), birStringvar.get(), zhuanyeStringvar.get(), xuefenStringvar.get(), beizhuStringvar.get()))
connection.commit()
tree.insert('', 'end', value = [numStringvar.get(), nameStringvar.get(), sexStringvar.get(), birStringvar.get(), zhuanyeStringvar.get(), xuefenStringvar.get(), beizhuStringvar.get()])
tk.messagebox.showinfo('提示', numStringvar.get() + '信息插入成功!')
connection.close()
insertButton = tk.Button(win, text='插入', width=10, height=1,command=insert).grid(row=7,column=1,pady=5)
def delete():
xh = numStringvar.get()
connection = pymysql.connect('localhost', 'root', '123456', 'test_mysql')
cursor = connection.cursor()
cursor.execute('delete from stu_mysql where 学号 = "' + xh + '"' )
connection.commit()
tk.messagebox.showinfo('提示', xh + '信息删除成功!')
connection.close()
deleteButton = tk.Button(win, text='删除', width=10, height=1,command=delete).grid(row=7,column=2,pady=5)
def clear():
numStringvar.set('')
nameStringvar.set('')
sexStringvar.set('')
birStringvar.set('')
zhuanyeStringvar.set('')
xuefenStringvar.set('')
beizhuStringvar.set('')
clearButton = tk.Button(win, text='清空', width=10,height=1,command=clear).grid(row=7,column=3,pady=5)
tree = ttk.Treeview(win)
tree['column'] = ('学号','姓名','性别','出生时间','专业','总学分','备注')
tree.column('学号', width=100)
tree.column('姓名', width=100)
tree.column('性别', width=100)
tree.column('出生时间', width=100)
tree.column('专业', width=100)
tree.column('总学分', width=100)
tree.column('备注', width=100)
tree.heading('学号', text='学号')
tree.heading('姓名', text='姓名')
tree.heading('性别', text='性别')
tree.heading('出生时间', text='出生时间')
tree.heading('专业', text='专业')
tree.heading('总学分', text='总学分')
tree.heading('备注', text='备注')
tree.grid(row=8, column=0, columnspan=10)
win.mainloop()
效果展示