python tkinter 学生信息管理系统

匿名 (未验证) 提交于 2019-12-02 22:54:36

使用tkinter模块,python3.6,主要功能有添加,查询,删除,修改学生信息

下面贴出的是主界面和添加学生信息界面,剩下的就不贴出来了。。。。。。。。。

以下就是完整的代码:

  1 from tkinter import *   2 import tkinter.font as tkFont   3 import tkinter as tk   4 from tkinter import ttk   5    6 LARGE_FONT= ("Verdana", 20)   7    8 #窗口每页内容更换   9 class Application(tk.Tk):  10     def __init__(self):  11           12         super().__init__()  13   14         self.wm_title("学生信息管理系统")  15           16         container = tk.Frame(self)  17         container.pack(side="top", fill="both", expand = True)  18         container.grid_rowconfigure(0, weight=1)  19         container.grid_columnconfigure(0, weight=1)  20   21         self.frames = {}  22         for F in (StartPage, PageOne, PageTwo, PageThree,PageFour):  23             frame = F(container, self)  24             self.frames[F] = frame  25             frame.grid(row=0, column=0, sticky="nsew")  # 四个页面的位置都是 grid(row=0, column=0), 位置重叠,只有最上面的可见!!  26   27         self.show_frame(StartPage)  28   29           30     def show_frame(self, cont):  31         frame = self.frames[cont]  32         frame.tkraise() # 切换,提升当前 tk.Frame z轴顺序(使可见)!!此语句是本程序的点睛之处  33   34           35 class StartPage(tk.Frame):  36     ‘‘‘主页‘‘‘  37     def __init__(self, parent, root):  38         super().__init__(parent)  39         label = tk.Label(self, text="学生信息管理系统", font=LARGE_FONT)  40         label.pack(pady=100)  41         ft2=tkFont.Font(size=16)  42         Button(self, text="添加学生信息",font=ft2,command=lambda: root.show_frame(PageOne),width=30,height=2,fg=white,bg=gray,activebackground=black,activeforeground=white).pack()  43         Button(self, text="删除学生信息",font=ft2,command=lambda: root.show_frame(PageTwo),width=30,height=2).pack()  44         Button(self, text="修改学生信息",font=ft2,command=lambda: root.show_frame(PageThree),width=30,height=2,fg=white,bg=gray,activebackground=black,activeforeground=white).pack()  45         Button(self, text="查询学生信息",font=ft2,command=lambda: root.show_frame(PageFour),width=30,height=2).pack()  46         Button(self,text=退出系统,height=2,font=ft2,width=30,command=root.destroy,fg=white,bg=gray,activebackground=black,activeforeground=white).pack()  47   48   49   50 #添加学生信息  51 class PageOne(tk.Frame):  52     def __init__(self, parent, root):  53         super().__init__(parent)  54         label = tk.Label(self, text="添加学生信息", font=LARGE_FONT)  55         label.pack(pady=100)  56   57         ft3=tkFont.Font(size=14)  58         ft4=tkFont.Font(size=12)  59         Label(self,text=学生学号:,font=ft3).pack(side=TOP)  60         global e1  61         e1=StringVar()  62         Entry(self,width=30,textvariable=e1,font=ft3,bg=Ivory).pack(side=TOP)  63         Label(self,text=学生姓名:,font=ft3).pack(side=TOP)  64         global e2  65         e2=StringVar()  66         Entry(self,width=30,textvariable=e2,font=ft3,bg=Ivory).pack(side=TOP)  67         Label(self,text=学生成绩:,font=ft3).pack(side=TOP)  68         global e3  69         e3=StringVar()  70         Entry(self,width=30,textvariable=e3,font=ft3,bg=Ivory).pack(side=TOP)  71         Button(self, text="返回首页",width=8,font=ft4,command=lambda: root.show_frame(StartPage)).pack(pady=20)  72         Button(self, text="确定保存",width=8,font=ft4,command=self.save).pack(side=TOP)  73           74     def save(self):  75         with open(student_infor.txt,a+) as student_infor:  76             num=str(e1.get())  77             name=str(e2.get())  78             score=str(e3.get())  79             student_infor.write(num+ +name+ +score+\n)  80   81 #删除学生信息  82 class PageTwo(tk.Frame):  83     def __init__(self, parent, root):  84         super().__init__(parent)  85         label = tk.Label(self, text="添加学生信息", font=LARGE_FONT)  86         label.pack(pady=100)  87   88         ft3=tkFont.Font(size=14)  89         ft4=tkFont.Font(size=12)  90         Label(self,text=请输入你要删除的学生学号:,font=ft3).pack(side=TOP)  91         global e4  92         e4=StringVar()  93         Entry(self,width=30,textvariable=e4,font=ft3,bg=Ivory).pack(side=TOP)  94         Button(self, text="确定删除",width=8,font=ft4,command=self.del1).pack(pady=20)  95         Button(self, text="返回首页",width=8,font=ft4,command=lambda: root.show_frame(StartPage)).pack()  96             def del1(self):  97         num2=str(e4.get())  98         with open(student_infor.txt,r) as f:  99             lines=f.readlines() 100             with open(student_infor.txt,w) as f_w: 101                 for line in lines: 102                     if num2 in line: 103                         continue 104                     f_w.write(line) 105  106 #修改学生信息 107 class PageThree(tk.Frame): 108     def __init__(self, parent, root): 109         super().__init__(parent) 110         tk.Label(self, text="修改学生信息", font=LARGE_FONT).pack(pady=100) 111  112         ft3=tkFont.Font(size=14) 113         ft4=tkFont.Font(size=12) 114         Label(self,text=请输入你要修改的学生学号:,font=ft3).pack(side=TOP) 115         self.e5=StringVar() 116         Entry(self,width=30,textvariable=self.e5,font=ft3,bg=Ivory).pack(side=TOP) 117         Label(self,text=学生姓名:,font=ft3).pack(side=TOP) 118         self.e6=StringVar() 119         Entry(self,width=30,textvariable=self.e6,font=ft3,bg=Ivory).pack(side=TOP) 120         Label(self,text=学生成绩:,font=ft3).pack(side=TOP) 121         self.e7=StringVar() 122         Entry(self,width=30,textvariable=self.e7,font=ft3,bg=Ivory).pack(side=TOP) 123         Button(self, text="确定修改",width=8,font=ft4,command=self.modify).pack(pady=20) 124         Button(self, text="返回首页",width=8,font=ft4,command=lambda: root.show_frame(StartPage)).pack() 125     def modify(self): 126         num3=str(self.e5.get()) 127         name3=str(self.e6.get()) 128         score3=str(self.e7.get()) 129         with open(student_infor.txt,r) as r_w: 130             lines1=r_w.readlines() 131             with open(student_infor.txt,w) as rr_w: 132                 for line1 in lines1: 133                     if num3 in line1: 134                         rr_w.write(num3+ +name3+ +score3+\n) 135                         continue 136                     rr_w.write(line1) 137  138 #查询学生成绩 139 class PageFour(tk.Frame): 140     def __init__(self, parent, root): 141         super().__init__(parent) 142         label = tk.Label(self, text="查询学生成绩", font=LARGE_FONT) 143         label.pack(pady=100) 144         tree_data=ttk.Treeview() 145         ft4=tkFont.Font(size=12) 146        #滚动条 147  148         scro=Scrollbar(self) 149  150         scro.pack(side=RIGHT,fill=Y) 151         lista=Listbox(self,yscrollcommand=scro.set,width=50) 152  153         f=open(student_infor.txt,r) 154         text=("                 %-16s%-16s%-16s"%("学号","姓名","成绩")) 155  156         li=[] 157         for i in f.readlines(): 158             j=i.split( ) 159             j[2]=j[2].replace(\n,‘‘) 160             li.append(j) 161             li.sort(key=lambda x:x[2],reverse=False) 162         for i in li: 163             text1=("                %-16s%-16s%-16s"%(i[0],i[1],i[2])) 164             lista.insert(0,text1) 165         f.close() 166         lista.insert(0,text) 167         lista.pack() 168         Button(self, text="返回首页",width=8,font=ft4,command=lambda: root.show_frame(StartPage)).pack(pady=40) 169  170  171 if __name__ == __main__: 172     # 实例化Application 173     app = Application() 174      175     # 主消息循环: 176     app.mainloop()

2018-06-22

原文:https://www.cnblogs.com/xy-ju24/p/9212855.html

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!