首先需要创建数据库
我这里是创建本地数据库
代码为
1 conn.execute ('''CREATE TABLE IF EXISTS StudentTable(
2 ID INTEGER PRIMARY KEY AUTOINCREMENT,
3 StuId INTEGER NOT NULL,
4 NAME TEXT NOT NULL,
5 CLASS INT NOT NULL,
6 AGE INTEGER Not NULL);''')
7 print("Table created successfully");
对主页的设计,添加本地图片
1 #打开本地数据库用于存储用户信息
2 conn = sqlite3.connect('student1.db')
3 #主界面
4 root=Tk()
5 root.title("学生信息管理系统")
6 root.config(width=600)
7 root.config(height=600)
8
9 #添加窗口背景图片
10 canvas=tkinter.Canvas(root,
11 width=600, #指定Canvas组件的宽度
12 height=600, #指定Canvas组件的高度
13 bg='white' #指定Canvas组件的背景色
14 #im=tkinter.PhotoImage(file='img.gif') 使用PhotoImage打开图片
15
16
17 )
18
19
20
21 """ 记得在运行时修改文件所在位置。********************************************************* """
22
23
24 image=Image.open("E:\pathon\实验\大作业\爱心.jpg")
25 im=ImageTk.PhotoImage(image)
26
27 canvas.create_image(400,200,image=im) #使用creat_image将图片添加到Canvas
28 canvas.pack()
主页
1 #创建顶级菜单及其下拉菜单
2 menubar=Menu(root)
3 filemenu=Menu(menubar,tearoff=False)
4 filemenu.add_command(label="增加",command=insert_stu)
5 filemenu.add_command(label="删除",command=delete_stu)#command接删除函数/下面接修改函数
6 filemenu.add_command(label="修改",command=change_stu)
7 filemenu.add_command(label="查询",command=sel_stu)
8
9 filemenu.add_separator()
10 filemenu.add_command(label="退出",command=root.destroy)
11 menubar.add_cascade(label="菜单",menu=filemenu)
12
13 #显示菜单
14 root.config(menu=menubar)
15
16 buttoninsert_stu=Button(root,text="录入学生信息",font=("微软雅黑 -20"),command=insert_stu)
17 #buttoninsert_stu.grid(row=2,column=0)由下面的代码将该代码覆盖,显示的是在界面上的位置
18 buttoninsert_stu.place(x=50,y=50,height=40,width=200)
19
20 buttondelete_stu=Button(root,text="删除学生信息",font=("微软雅黑 -20"),command=delete_stu)
21 #buttondelete_stu.grid(row=2,column=1)
22 buttondelete_stu.place(x=50,y=150,height=40,width=200)
23
24 buttonchange_stu=Button(root,text="修改学生信息",font=("微软雅黑 -20"),command=change_stu)
25 #buttonchange_stu.grid(row=4,column=0)
26 buttonchange_stu.place(x=50,y=250,height=40,width=200)
27
28 buttonsel_stu=Button(root,text="查询学生信息",font=("微软雅黑 -20"),command=sel_stu)
29 #buttonsel_stu.grid(row=4,column=1)
30 buttonsel_stu.place(x=50,y=350,height=40,width=200)
分批次操作
实现增加学生信息的功能
1 #增加学生信息
2 def insert_stu(): #录入学生信息
3 root1=Tk()
4 root1.title("录入学生信息")
5 root1.config(width=600)
6 root1.config(height=600)
7
8
9
10
11
12
13 #创建关联字符变量
14 varName=StringVar(root1,value='')
15 varId=StringVar(root1,value='')
16 varClass=StringVar(root1,value='')
17 varAge=StringVar(root1,value='')
18
19
20
21 #创建标签组件
22 label=Label(root1,text="姓名:",font=("微软雅黑 -20"))
23 #label.grid(row=0,sticky=E)
24 label.place(x=30,y=60,height=40,width=80)
25
26 label=Label(root1,text="学号:",font=("微软雅黑 -20"))
27 #label.grid(row=1,sticky=E)
28 label.place(x=30,y=110,height=40,width=80)
29
30
31 label=Label(root1,text="班级:",font=("微软雅黑 -20"))
32 #label.grid(row=2,sticky=E)
33 label.place(x=30,y=160,height=40,width=80)
34
35
36 label=Label(root1,text="年龄:",font=("微软雅黑 -20"))
37 #label.grid(row=3,sticky=E)
38 label.place(x=30,y=210,height=40,width=80)
39
40 #创建文本框组件,同时设置关联的变量
41 # 姓名entryName
42 # 学号entryId
43 # 班级entryClass
44 # 年龄entryAge
45
46
47 entryName=Entry((root1),textvariable=varName)
48 #entryName.grid(row=0,column=1,sticky=W)
49 entryName.place(x=120,y=60,height=40,width=200)
50
51 entryId=Entry((root1),textvariable=varId)
52 #entryId.grid(row=1,column=1,sticky=W)
53 entryId.place(x=120,y=110,height=40,width=200)
54
55 entryClass=Entry((root1),textvariable=varClass)
56 #entryClass.grid(row=2,column=1,sticky=W)
57 entryClass.place(x=120,y=160,height=40,width=200)
58
59 entryAge=Entry((root1),textvariable=varAge)
60 #entryAge.grid(row=3,column=1,sticky=W)
61 entryAge.place(x=120,y=210,height=40,width=200)
62
63
64 def buttonOK():
65 i=0
66
67 conn = sqlite3.connect('student1.db')
68
69 stu_id = eval(entryId.get())#学号输入
70 stu_name =str(entryName.get())#姓名录入
71 stu_class =eval(entryClass.get())#班级录入
72 stu_age=eval(entryAge.get())#年龄录入
73
74 cursor = conn.execute("SELECT * from StudentTable;")
75 conn.commit()
76 for row in cursor:#进行遍历查找是否有重复的学号
77 if stu_id==row[0]:
78 i=1
79 break
80 else:
81 i=0
82 #查找完成若有重复的学号,则警告。否则录入数据库
83 if i==1:
84 messagebox.showerror('警告',message='学号重复,请重新输入')
85 else:
86 try:
87 sql1 = "INSERT INTO StudentTable(StuId,NAME,CLA,AGE)"
88 sql1+="VALUES(%d,'%s',%d,%d)"%(stu_id,stu_name,stu_class,stu_age)
89 conn.execute(sql1)
90 conn.commit()
91 messagebox.showinfo(title='恭喜',message='录入成功!')
92 root1.destroy()
93 except:
94 messagebox.showerror('警告',message='未录入成功')
95
96
97 buttonbuttonOK=Button(root1,text="录入学生信息",font=("微软雅黑 -20"),command=buttonOK)
98 buttonbuttonOK.place(x=150,y=300,height=40,width=200)
99 def cancel():
100 varName.set('')
101 varId.set('')
102 varClass.set('')
103 varAge.set('')
104
105
106 #取消键
107 buttonCancel=Button(root1,text="取消",font=("微软雅黑 -20"),command=cancel)
108 buttonCancel.place(x=150,y=350,height=40,width=200)
109
110 #退出键
111 buttondel=Button(root1,text="退出",font=("微软雅黑 -20"),command=root1.destroy)
112 buttondel.place(x=150,y=400,height=40,width=200)
113 root1.mainloop()
实现删除学生信息功能
1 def delete_stu():
2 root2=Tk()
3 root2.title("删除学生信息")
4 root2.config(width=600)
5 root2.config(height=600)
6
7
8 #添加窗口背景图片
9
10
11
12 #创建标签
13 label=Label(root2,text="学号:",font=("微软雅黑 -20"))
14 #label.grid(row=1,sticky=E)
15 label.place(x=30,y=20,height=40,width=80)
16
17 entryId=Entry(root2)
18 entryId.place(x=120,y=20,height=40,width=200)
19
20 def delete():
21
22 conn = sqlite3.connect('student1.db')
23 stu_id = eval(entryId.get())#学号输入
24 conn.execute("DELETE from StudentTable where StuId = '%s';"%stu_id)
25 conn.commit()
26 messagebox.showinfo(title='恭喜',message='删除成功!')
27 root2.destroy()
28
29
30
31
32
33 #删除键
34 buttondelete=Button(root2,text="删除",font=("微软雅黑 -20"),command=delete)
35 buttondelete.place(x=150,y=160,height=40,width=200)
36
37 #退出键
38 buttondel=Button(root2,text="退出",font=("微软雅黑 -20"),command=root2.destroy)
39 buttondel.place(x=150,y=210,height=40,width=200)
40
41
42 root2.mainloop()
实现查询功能
1 def sel_stu():
2 root3=Tk()
3 root3.title("查询学生信息")
4 root3.config(width=600)
5 root3.config(height=600)
6
7
8
9
10 #创建关联变量
11 sId=StringVar(root3,value='')
12
13 #创建文本组件框\标签组件
14 label=Label(root3,text="学号",font=("微软雅黑 -20"))
15 label.place(x=30,y=10,height=40,width=80)
16
17 selId=Entry((root3),textvariable=sId)
18 selId.place(x=120,y=10,height=40,width=200)
19
20
21
22 def select():
23
24 #创建关联字符变量
25 varName=StringVar(root3,value='')
26 varId=StringVar(root3,value='')
27 varClass=StringVar(root3,value='')
28 varAge=StringVar(root3,value='')
29
30
31 conn = sqlite3.connect('student1.db')
32 stu_id = eval(selId.get())#学号输入
33 cursor = conn.execute("SELECT * from StudentTable where StuId = '%d';"%stu_id)
34 conn.commit()
35 for row in cursor:
36 if stu_id == row[0]:
37 stu_name=row[1]
38 stu_class=row[2]
39 stu_age=row[3]
40
41
42
43
44 #创建标签组件
45 label=Label(root3,text="姓名:",font=("微软雅黑 -20"))
46 #label.grid(row=0,sticky=E)
47 label.place(x=30,y=110,height=40,width=80)
48
49 label=Label(root3,text="学号:",font=("微软雅黑 -20"))
50 #label.grid(row=1,sticky=E)
51 label.place(x=30,y=160,height=40,width=80)
52
53
54 label=Label(root3,text="班级:",font=("微软雅黑 -20"))
55 #label.grid(row=2,sticky=E)
56 label.place(x=30,y=210,height=40,width=80)
57
58
59 label=Label(root3,text="年龄:",font=("微软雅黑 -20"))
60 #label.grid(row=3,sticky=E)
61 label.place(x=30,y=260,height=40,width=80)
62
63 #创建文本框组件,同时设置关联的变量
64 # 姓名entryName
65 # 学号entryId
66 # 班级entryClass
67 # 年龄entryAge
68
69 entryName=Entry((root3),textvariable=varName)
70 #entryName.grid(row=0,column=1,sticky=W)
71 entryName.place(x=120,y=110,height=40,width=200)
72
73 entryId=Entry((root3),textvariable=varId)
74 #entryId.grid(row=1,column=1,sticky=W)
75 entryId.place(x=120,y=160,height=40,width=200)
76
77 entryClass=Entry((root3),textvariable=varClass)
78 #entryClass.grid(row=2,column=1,sticky=W)
79 entryClass.place(x=120,y=210,height=40,width=200)
80
81 entryAge=Entry((root3),textvariable=varAge)
82 #entryAge.grid(row=3,column=1,sticky=W)
83 entryAge.place(x=120,y=260,height=40,width=200)
84
85 varName.set(stu_name)
86 varId.set(stu_id)
87 varClass.set(stu_class)
88 varAge.set(stu_age)
89
90 #查询键
91 buttonselect=Button(root3,text="查询",font=("微软雅黑 -20"),command=select)
92 buttonselect.place(x=200,y=60,height=40,width=100)
93
94 #取消键
95 def cancel():
96 sId.set('')
97
98 buttoncancel=Button(root3,text="取消",font="微软雅黑 -20",command=cancel)
99 buttoncancel.place(x=50,y=60,height=40,width=100)
100
101 #退出键
102 buttondel=Button(root3,text="退出",font="微软雅黑 -20",command=root3.destroy)
103 buttondel.place(x=350,y=60,height=40,width=100)
104 root3.mainloop()
修改功能
1 def change_stu():
2 root4=Tk()
3 root4.title("修改学生信息")
4 root4.config(width=600)
5 root4.config(height=600)
6
7 #创建关联变量
8 sId=StringVar(root4,value='')
9
10 #创建文本组件框\标签组件
11 label=Label(root4,text="学号",font=("微软雅黑 -20"))
12 label.place(x=30,y=10,height=40,width=80)
13
14 selId=Entry((root4),textvariable=sId)
15 selId.place(x=120,y=10,height=40,width=200)
16
17 #创建关联字符变量
18 varName=StringVar(root4,value='')
19 varId=StringVar(root4,value='')
20 varClass=StringVar(root4,value='')
21 varAge=StringVar(root4,value='')
22
23 #创建标签组件
24
25 label=Label(root4,text="姓名:",font=("微软雅黑 -20"))
26 #label.grid(row=0,sticky=E)
27 label.place(x=30,y=110,height=40,width=80)
28
29 label=Label(root4,text="学号:",font=("微软雅黑 -20"))
30 #label.grid(row=1,sticky=E)
31 label.place(x=30,y=160,height=40,width=80)
32
33
34 label=Label(root4,text="班级:",font=("微软雅黑 -20"))
35 #label.grid(row=2,sticky=E)
36 label.place(x=30,y=210,height=40,width=80)
37
38
39 label=Label(root4,text="年龄:",font=("微软雅黑 -20"))
40 #label.grid(row=3,sticky=E)
41 label.place(x=30,y=260,height=40,width=80)
42
43 #创建文本框组件,同时设置关联的变量
44 # 姓名entryName
45 # 学号entryId
46 # 班级entryClass
47 # 年龄entryAge
48 entryName=Entry((root4),textvariable=varName)
49 #entryName.grid(row=0,column=1,sticky=W)
50 entryName.place(x=120,y=110,height=40,width=200)
51
52 entryId=Entry((root4),textvariable=varId)
53 #entryId.grid(row=1,column=1,sticky=W)
54 entryId.place(x=120,y=160,height=40,width=200)
55
56 entryClass=Entry((root4),textvariable=varClass)
57 #entryClass.grid(row=2,column=1,sticky=W)
58 entryClass.place(x=120,y=210,height=40,width=200)
59
60 entryAge=Entry((root4),textvariable=varAge)
61 #entryAge.grid(row=3,column=1,sticky=W)
62 entryAge.place(x=120,y=260,height=40,width=200)
63
64 def select():
65
66 conn = sqlite3.connect('student1.db')
67 stu_id = eval(selId.get())#学号输入
68 cursor = conn.execute("SELECT * from StudentTable where StuId = %d;"%stu_id)
69 conn.commit()
70 for row in cursor:
71 if stu_id == row[0]:
72 stu_name=row[1]
73 stu_class=row[2]
74 stu_age=row[3]
75
76 varName.set(stu_name)
77 varId.set(stu_id)
78 varClass.set(stu_class)
79 varAge.set(stu_age)
80
81 def saveName():
82 name=entryName.get()
83 conn=sqlite3.connect('student1.db')
84 sql="UPDATE StudentTable SET NAME='%s' WHERE StuId=%d;"%(name,eval(selId.get()))
85 conn.execute(sql)
86 conn.commit()
87
88 messagebox.showinfo(title='恭喜',message='保存成功!')
89
90 def saveCla():
91 cla=eval(entryClass.get())
92 conn=sqlite3.connect('student1.db')
93 sql="UPDATE StudentTable SET CLA=%d WHERE StuId=%d;"%(cla,eval(selId.get()))
94 conn.execute(sql)
95 conn.commit()
96
97 messagebox.showinfo(title='恭喜',message='保存成功!')
98
99 def saveAge():
100 age=eval(entryAge.get())
101 conn=sqlite3.connect('student1.db')
102 sql="UPDATE StudentTable SET AGE=%d WHERE StuId=%d;"%(age,eval(selId.get()))
103 conn.execute(sql)
104 conn.commit()
105
106 messagebox.showinfo(title='恭喜',message='保存成功!')
107
108
109 #保存键
110 buttonname=Button(root4,text="保存",font=("微软雅黑 -20"),command=saveName)
111 buttonname.place(x=330,y=110,height=40,width=60)
112
113 buttoncla=Button(root4,text="保存",font=("微软雅黑 -20"),command=saveCla)
114 buttoncla.place(x=330,y=210,height=40,width=60)
115
116 buttonage=Button(root4,text="保存",font=("微软雅黑 -20"),command=saveAge)
117 buttonage.place(x=330,y=260,height=40,width=60)
118
119 def cancel():
120 sId.set('')
121
122 #取消键
123 buttoncancel=Button(root4,text="取消",font=("微软雅黑 -20"),command=cancel)
124 buttoncancel.place(x=20,y=60,height=40,width=60)
125
126 #查询键
127 buttonselect=Button(root4,text="查询",font=("微软雅黑 -20"),command=select)
128 buttonselect.place(x=100,y=60,height=40,width=60)
129
130 #退出键
131 buttondel=Button(root4,text="退出",font="微软雅黑 -20",command=root4.destroy)
132 buttondel.place(x=260,y=60,height=40,width=60)
133
134 root4.mainloop()
完整代码
1 from tkinter import *
2 from tkinter import messagebox
3 from tkinter import filedialog
4 from PIL import Image,ImageTk
5 import tkinter
6 import sqlite3
7
8
9
10 #创建本地数据库
11 #提交的文件中存在数据库,所以该数据库的创建程序可以不运行
12
13 """
14
15
16 conn.execute ('''CREATE TABLE StudentTable(
17 ID INTEGER PRIMARY KEY AUTOINCREMENT,
18 StuId INTEGER NOT NULL,
19 NAME TEXT NOT NULL,
20 CLASS INT NOT NULL,
21 AGE INTEGER Not NULL);''')
22 print("Table created successfully");
23
24 #创建本地数据库
25
26
27
28
29 """
30 #打开本地数据库用于存储用户信息
31 conn = sqlite3.connect('student1.db')
32 #主界面
33 root=Tk()
34 root.title("学生信息管理系统")
35 root.config(width=600)
36 root.config(height=600)
37
38 #添加窗口背景图片
39 canvas=tkinter.Canvas(root,
40 width=600, #指定Canvas组件的宽度
41 height=600, #指定Canvas组件的高度
42 bg='white' #指定Canvas组件的背景色
43 #im=tkinter.PhotoImage(file='img.gif') 使用PhotoImage打开图片
44
45
46 )
47
48
49
50 """ 记得在运行时修改文件所在位置。********************************************************* """
51
52
53 image=Image.open("E:\爱心.jpg")
54 im=ImageTk.PhotoImage(image)
55
56 canvas.create_image(400,200,image=im) #使用creat_image将图片添加到Canvas
57 canvas.pack()
58
59
60
61 """******************************************************************************************"""
62
63 """************************ 录入信息部分 ********************************************"""
64
65
66
67
68 #增加学生信息
69 def insert_stu(): #录入学生信息
70 root1=Tk()
71 root1.title("录入学生信息")
72 root1.config(width=600)
73 root1.config(height=600)
74
75
76
77
78
79
80 #创建关联字符变量
81 varName=StringVar(root1,value='')
82 varId=StringVar(root1,value='')
83 varClass=StringVar(root1,value='')
84 varAge=StringVar(root1,value='')
85
86
87
88 #创建标签组件
89 label=Label(root1,text="姓名:",font=("微软雅黑 -20"))
90 #label.grid(row=0,sticky=E)
91 label.place(x=30,y=60,height=40,width=80)
92
93 label=Label(root1,text="学号:",font=("微软雅黑 -20"))
94 #label.grid(row=1,sticky=E)
95 label.place(x=30,y=110,height=40,width=80)
96
97
98 label=Label(root1,text="班级:",font=("微软雅黑 -20"))
99 #label.grid(row=2,sticky=E)
100 label.place(x=30,y=160,height=40,width=80)
101
102
103 label=Label(root1,text="年龄:",font=("微软雅黑 -20"))
104 #label.grid(row=3,sticky=E)
105 label.place(x=30,y=210,height=40,width=80)
106
107 #创建文本框组件,同时设置关联的变量
108 # 姓名entryName
109 # 学号entryId
110 # 班级entryClass
111 # 年龄entryAge
112
113
114 entryName=Entry((root1),textvariable=varName)
115 #entryName.grid(row=0,column=1,sticky=W)
116 entryName.place(x=120,y=60,height=40,width=200)
117
118 entryId=Entry((root1),textvariable=varId)
119 #entryId.grid(row=1,column=1,sticky=W)
120 entryId.place(x=120,y=110,height=40,width=200)
121
122 entryClass=Entry((root1),textvariable=varClass)
123 #entryClass.grid(row=2,column=1,sticky=W)
124 entryClass.place(x=120,y=160,height=40,width=200)
125
126 entryAge=Entry((root1),textvariable=varAge)
127 #entryAge.grid(row=3,column=1,sticky=W)
128 entryAge.place(x=120,y=210,height=40,width=200)
129
130
131 def buttonOK():
132 i=0
133
134 conn = sqlite3.connect('student1.db')
135
136 stu_id = eval(entryId.get())#学号输入
137 stu_name =str(entryName.get())#姓名录入
138 stu_class =eval(entryClass.get())#班级录入
139 stu_age=eval(entryAge.get())#年龄录入
140
141 cursor = conn.execute("SELECT * from StudentTable;")
142 conn.commit()
143 for row in cursor:#进行遍历查找是否有重复的学号
144 if stu_id==row[0]:
145 i=1
146 break
147 else:
148 i=0
149 #查找完成若有重复的学号,则警告。否则录入数据库
150 if i==1:
151 messagebox.showerror('警告',message='学号重复,请重新输入')
152 else:
153 try:
154 sql1 = "INSERT INTO StudentTable(StuId,NAME,CLA,AGE)"
155 sql1+="VALUES(%d,'%s',%d,%d)"%(stu_id,stu_name,stu_class,stu_age)
156 conn.execute(sql1)
157 conn.commit()
158 messagebox.showinfo(title='恭喜',message='录入成功!')
159 root1.destroy()
160 except:
161 messagebox.showerror('警告',message='未录入成功')
162
163
164 buttonbuttonOK=Button(root1,text="录入学生信息",font=("微软雅黑 -20"),command=buttonOK)
165 buttonbuttonOK.place(x=150,y=300,height=40,width=200)
166 def cancel():
167 varName.set('')
168 varId.set('')
169 varClass.set('')
170 varAge.set('')
171
172
173 #取消键
174 buttonCancel=Button(root1,text="取消",font=("微软雅黑 -20"),command=cancel)
175 buttonCancel.place(x=150,y=350,height=40,width=200)
176
177 #退出键
178 buttondel=Button(root1,text="退出",font=("微软雅黑 -20"),command=root1.destroy)
179 buttondel.place(x=150,y=400,height=40,width=200)
180 root1.mainloop()
181
182
183
184 #录入完成
185 """******************************************************************************************"""
186
187 """************************ 删除的部分 ********************************************"""
188 #删除学生信息
189
190
191
192 def delete_stu():
193 root2=Tk()
194 root2.title("删除学生信息")
195 root2.config(width=600)
196 root2.config(height=600)
197
198
199 #添加窗口背景图片
200
201
202
203 #创建标签
204 label=Label(root2,text="学号:",font=("微软雅黑 -20"))
205 #label.grid(row=1,sticky=E)
206 label.place(x=30,y=20,height=40,width=80)
207
208 entryId=Entry(root2)
209 entryId.place(x=120,y=20,height=40,width=200)
210
211 def delete():
212
213 conn = sqlite3.connect('student1.db')
214 stu_id = eval(entryId.get())#学号输入
215 conn.execute("DELETE from StudentTable where StuId = '%s';"%stu_id)
216 conn.commit()
217 messagebox.showinfo(title='恭喜',message='删除成功!')
218 root2.destroy()
219
220
221
222
223
224 #删除键
225 buttondelete=Button(root2,text="删除",font=("微软雅黑 -20"),command=delete)
226 buttondelete.place(x=150,y=160,height=40,width=200)
227
228 #退出键
229 buttondel=Button(root2,text="退出",font=("微软雅黑 -20"),command=root2.destroy)
230 buttondel.place(x=150,y=210,height=40,width=200)
231
232
233 root2.mainloop()
234 #删除完成
235 """******************************************************************************************"""
236
237 """************************ 查询的部分 ********************************************"""
238
239
240
241 #查询学生信息
242 def sel_stu():
243 root3=Tk()
244 root3.title("查询学生信息")
245 root3.config(width=600)
246 root3.config(height=600)
247
248
249
250
251 #创建关联变量
252 sId=StringVar(root3,value='')
253
254 #创建文本组件框\标签组件
255 label=Label(root3,text="学号",font=("微软雅黑 -20"))
256 label.place(x=30,y=10,height=40,width=80)
257
258 selId=Entry((root3),textvariable=sId)
259 selId.place(x=120,y=10,height=40,width=200)
260
261
262
263 def select():
264
265 #创建关联字符变量
266 varName=StringVar(root3,value='')
267 varId=StringVar(root3,value='')
268 varClass=StringVar(root3,value='')
269 varAge=StringVar(root3,value='')
270
271
272 conn = sqlite3.connect('student1.db')
273 stu_id = eval(selId.get())#学号输入
274 cursor = conn.execute("SELECT * from StudentTable where StuId = '%d';"%stu_id)
275 conn.commit()
276 for row in cursor:
277 if stu_id == row[0]:
278 stu_name=row[1]
279 stu_class=row[2]
280 stu_age=row[3]
281
282
283
284
285 #创建标签组件
286 label=Label(root3,text="姓名:",font=("微软雅黑 -20"))
287 #label.grid(row=0,sticky=E)
288 label.place(x=30,y=110,height=40,width=80)
289
290 label=Label(root3,text="学号:",font=("微软雅黑 -20"))
291 #label.grid(row=1,sticky=E)
292 label.place(x=30,y=160,height=40,width=80)
293
294
295 label=Label(root3,text="班级:",font=("微软雅黑 -20"))
296 #label.grid(row=2,sticky=E)
297 label.place(x=30,y=210,height=40,width=80)
298
299
300 label=Label(root3,text="年龄:",font=("微软雅黑 -20"))
301 #label.grid(row=3,sticky=E)
302 label.place(x=30,y=260,height=40,width=80)
303
304 #创建文本框组件,同时设置关联的变量
305 # 姓名entryName
306 # 学号entryId
307 # 班级entryClass
308 # 年龄entryAge
309
310 entryName=Entry((root3),textvariable=varName)
311 #entryName.grid(row=0,column=1,sticky=W)
312 entryName.place(x=120,y=110,height=40,width=200)
313
314 entryId=Entry((root3),textvariable=varId)
315 #entryId.grid(row=1,column=1,sticky=W)
316 entryId.place(x=120,y=160,height=40,width=200)
317
318 entryClass=Entry((root3),textvariable=varClass)
319 #entryClass.grid(row=2,column=1,sticky=W)
320 entryClass.place(x=120,y=210,height=40,width=200)
321
322 entryAge=Entry((root3),textvariable=varAge)
323 #entryAge.grid(row=3,column=1,sticky=W)
324 entryAge.place(x=120,y=260,height=40,width=200)
325
326 varName.set(stu_name)
327 varId.set(stu_id)
328 varClass.set(stu_class)
329 varAge.set(stu_age)
330
331 #查询键
332 buttonselect=Button(root3,text="查询",font=("微软雅黑 -20"),command=select)
333 buttonselect.place(x=200,y=60,height=40,width=100)
334
335 #取消键
336 def cancel():
337 sId.set('')
338
339 buttoncancel=Button(root3,text="取消",font="微软雅黑 -20",command=cancel)
340 buttoncancel.place(x=50,y=60,height=40,width=100)
341
342 #退出键
343 buttondel=Button(root3,text="退出",font="微软雅黑 -20",command=root3.destroy)
344 buttondel.place(x=350,y=60,height=40,width=100)
345 root3.mainloop()
346
347
348 #查询完成
349 """******************************************************************************************"""
350
351 """************************ 修改的部分 ********************************************"""
352
353
354 #修改学生信息
355 def change_stu():
356 root4=Tk()
357 root4.title("修改学生信息")
358 root4.config(width=600)
359 root4.config(height=600)
360
361 #创建关联变量
362 sId=StringVar(root4,value='')
363
364 #创建文本组件框\标签组件
365 label=Label(root4,text="学号",font=("微软雅黑 -20"))
366 label.place(x=30,y=10,height=40,width=80)
367
368 selId=Entry((root4),textvariable=sId)
369 selId.place(x=120,y=10,height=40,width=200)
370
371 #创建关联字符变量
372 varName=StringVar(root4,value='')
373 varId=StringVar(root4,value='')
374 varClass=StringVar(root4,value='')
375 varAge=StringVar(root4,value='')
376
377 #创建标签组件
378
379 label=Label(root4,text="姓名:",font=("微软雅黑 -20"))
380 #label.grid(row=0,sticky=E)
381 label.place(x=30,y=110,height=40,width=80)
382
383 label=Label(root4,text="学号:",font=("微软雅黑 -20"))
384 #label.grid(row=1,sticky=E)
385 label.place(x=30,y=160,height=40,width=80)
386
387
388 label=Label(root4,text="班级:",font=("微软雅黑 -20"))
389 #label.grid(row=2,sticky=E)
390 label.place(x=30,y=210,height=40,width=80)
391
392
393 label=Label(root4,text="年龄:",font=("微软雅黑 -20"))
394 #label.grid(row=3,sticky=E)
395 label.place(x=30,y=260,height=40,width=80)
396
397 #创建文本框组件,同时设置关联的变量
398 # 姓名entryName
399 # 学号entryId
400 # 班级entryClass
401 # 年龄entryAge
402 entryName=Entry((root4),textvariable=varName)
403 #entryName.grid(row=0,column=1,sticky=W)
404 entryName.place(x=120,y=110,height=40,width=200)
405
406 entryId=Entry((root4),textvariable=varId)
407 #entryId.grid(row=1,column=1,sticky=W)
408 entryId.place(x=120,y=160,height=40,width=200)
409
410 entryClass=Entry((root4),textvariable=varClass)
411 #entryClass.grid(row=2,column=1,sticky=W)
412 entryClass.place(x=120,y=210,height=40,width=200)
413
414 entryAge=Entry((root4),textvariable=varAge)
415 #entryAge.grid(row=3,column=1,sticky=W)
416 entryAge.place(x=120,y=260,height=40,width=200)
417
418 def select():
419
420 conn = sqlite3.connect('student1.db')
421 stu_id = eval(selId.get())#学号输入
422 cursor = conn.execute("SELECT * from StudentTable where StuId = %d;"%stu_id)
423 conn.commit()
424 for row in cursor:
425 if stu_id == row[0]:
426 stu_name=row[1]
427 stu_class=row[2]
428 stu_age=row[3]
429
430 varName.set(stu_name)
431 varId.set(stu_id)
432 varClass.set(stu_class)
433 varAge.set(stu_age)
434
435 def saveName():
436 name=entryName.get()
437 conn=sqlite3.connect('student1.db')
438 sql="UPDATE StudentTable SET NAME='%s' WHERE StuId=%d;"%(name,eval(selId.get()))
439 conn.execute(sql)
440 conn.commit()
441
442 messagebox.showinfo(title='恭喜',message='保存成功!')
443
444 def saveCla():
445 cla=eval(entryClass.get())
446 conn=sqlite3.connect('student1.db')
447 sql="UPDATE StudentTable SET CLA=%d WHERE StuId=%d;"%(cla,eval(selId.get()))
448 conn.execute(sql)
449 conn.commit()
450
451 messagebox.showinfo(title='恭喜',message='保存成功!')
452
453 def saveAge():
454 age=eval(entryAge.get())
455 conn=sqlite3.connect('student1.db')
456 sql="UPDATE StudentTable SET AGE=%d WHERE StuId=%d;"%(age,eval(selId.get()))
457 conn.execute(sql)
458 conn.commit()
459
460 messagebox.showinfo(title='恭喜',message='保存成功!')
461
462
463 #保存键
464 buttonname=Button(root4,text="保存",font=("微软雅黑 -20"),command=saveName)
465 buttonname.place(x=330,y=110,height=40,width=60)
466
467 buttoncla=Button(root4,text="保存",font=("微软雅黑 -20"),command=saveCla)
468 buttoncla.place(x=330,y=210,height=40,width=60)
469
470 buttonage=Button(root4,text="保存",font=("微软雅黑 -20"),command=saveAge)
471 buttonage.place(x=330,y=260,height=40,width=60)
472
473 def cancel():
474 sId.set('')
475
476 #取消键
477 buttoncancel=Button(root4,text="取消",font=("微软雅黑 -20"),command=cancel)
478 buttoncancel.place(x=20,y=60,height=40,width=60)
479
480 #查询键
481 buttonselect=Button(root4,text="查询",font=("微软雅黑 -20"),command=select)
482 buttonselect.place(x=100,y=60,height=40,width=60)
483
484 #退出键
485 buttondel=Button(root4,text="退出",font="微软雅黑 -20",command=root4.destroy)
486 buttondel.place(x=260,y=60,height=40,width=60)
487
488 root4.mainloop()
489
490 #创建顶级菜单及其下拉菜单
491 menubar=Menu(root)
492 filemenu=Menu(menubar,tearoff=False)
493 filemenu.add_command(label="增加",command=insert_stu)
494 filemenu.add_command(label="删除",command=delete_stu)#command接删除函数/下面接修改函数
495 filemenu.add_command(label="修改",command=change_stu)
496 filemenu.add_command(label="查询",command=sel_stu)
497
498 filemenu.add_separator()
499 filemenu.add_command(label="退出",command=root.destroy)
500 menubar.add_cascade(label="菜单",menu=filemenu)
501
502 #显示菜单
503 root.config(menu=menubar)
504
505 buttoninsert_stu=Button(root,text="录入学生信息",font=("微软雅黑 -20"),command=insert_stu)
506 #buttoninsert_stu.grid(row=2,column=0)由下面的代码将该代码覆盖,显示的是在界面上的位置
507 buttoninsert_stu.place(x=50,y=50,height=40,width=200)
508
509 buttondelete_stu=Button(root,text="删除学生信息",font=("微软雅黑 -20"),command=delete_stu)
510 #buttondelete_stu.grid(row=2,column=1)
511 buttondelete_stu.place(x=50,y=150,height=40,width=200)
512
513 buttonchange_stu=Button(root,text="修改学生信息",font=("微软雅黑 -20"),command=change_stu)
514 #buttonchange_stu.grid(row=4,column=0)
515 buttonchange_stu.place(x=50,y=250,height=40,width=200)
516
517 buttonsel_stu=Button(root,text="查询学生信息",font=("微软雅黑 -20"),command=sel_stu)
518 #buttonsel_stu.grid(row=4,column=1)
519 buttonsel_stu.place(x=50,y=350,height=40,width=200)
520 root.mainloop()
适用于初学python的学者。能够了解python的界面设计和对数据库的操作。
来源:oschina
链接:https://my.oschina.net/u/4323212/blog/4357568