关于“学生信息管理系统”的基本思路和详细过程,请看V1.0版本:
关于“学生信息管理系统”的非GUI进阶版本,请看V2.0版本:
下面是GUI界面的V3.0版本,同时包含学生信息的写入文件。
先给大家展示的是GUI可视化的大致实现思路
本程序的GUI界面可视化是使用了python的tkinter库(下面称thinter为tk)
①下面介绍如何初始化GUI界面
界面主要是使用了tk.label 和 tk.entry(代码即注释)
1. # 关于gui的代码, 用方法封装比较困难, 2. # 此处利用if __name__ == '__main__' , 方便代码折叠, ”阅读”全局思路 3. if __name__ == '__main__': 4. # 以下代码全部为gui界面的初始化 5. 6. # 第1步,实例化对象,建立窗口window 7. window = tk.Tk() 8. # 第2步,给窗口的可视化起名字 9. window.title('学生信息管理系统 V6.1') # 学生信息管理系统6 - 1 10. # 第3步,设定窗口的大小(长 * 宽) 11. window.geometry('500x650') 12. 13. # tk.StringVar()用于接收用户输入 14. result = tk.StringVar() 15. result.set(" ") 16. 17. # ①关于姓名的 label 和 entry 18. textName = tk.StringVar() 19. textName.set("") 20. labelLine1 = tk.Label(window, text="姓 名:", font=('Arial', 15), width=10).place(x=75, y=50, anchor='nw') 21. entryLine1 = tk.Entry(window, show=None, font=('宋体', 15), textvariable=textName, width=20) 22. entryLine1.place(x=190, y=50, anchor='nw') # 显示成明文形式 23. 24. # ②关于性别的 label 和 entry 25. textSex = tk.StringVar() 26. textSex.set("") 27. labelLine2 = tk.Label(window, text="性 别:", font=('Arial', 15), width=10) 28. labelLine2.place(x=75, y=100, anchor='nw') 29. entryLine2 = tk.Entry(window, show=None, font=('Arial', 15), textvariable=textSex, width=18) 30. entryLine2.place(x=190, y=100, anchor='nw') 31. 32. # ③关于电话的 label 和 entry 33. textPhone = tk.StringVar() 34. textPhone.set("") 35. labelLine3 = tk.Label(window, text="电 话:", font=('Arial', 15), width=10).place(x=75, y=150, anchor='nw') 36. entryLine3 = tk.Entry(window, show=None, font=('Arial', 15), textvariable=textPhone, width=18) 37. entryLine3.place(x=190, y=150, anchor='nw') 38. 39. # 关于"添加"组件,此处绑定函数addStudentsMessage()用于添加学生信息 40. button1_add = tk.Button(window, text='添 加', bg='silver', font=('Arial', 12), command=addStudentsMessage, width=8) 41. button1_add.place(x=40, y=220, anchor='nw') 42. # 关于"删除"组件,此处绑定函数deleteMessage()用于删除学生信息 43. button2_delete = tk.Button(window, text='删 除', bg='silver', font=('Arial', 12), command=deleteMessage, width=8) 44. button2_delete.place(x=150, y=220, anchor='nw') 45. # 关于"修改"组件,此处绑定函数change()用于修改学生信息 46. button3_change = tk.Button(window, text='修 改', bg='silver', font=('Arial', 12), command=change, width=8) 47. button3_change.place(x=260, y=220, anchor='nw') 48. # 关于"显示"组件,此处绑定函数show()用于显示学生信息 49. button4_show = tk.Button(window, text='显 示', bg='silver', font=('Arial', 12), command=show, width=8) 50. button4_show.place(x=370, y=220, anchor='nw') 51. # 下边两行代码是在gui界面显示我的学号和姓名 52. labelLine_Name = tk.Label(window, text="许梓璘", font=('宋体', 13), width=10).place(x=130, y=260, anchor='nw') 53. labelLine_myID = tk.Label(window, text="2109059342", font=('宋体', 13), width=10).place(x=250, y=260, anchor='nw') 54. 55. show_result = tk.Label(window, bg="white", fg="black", font=("宋体", 12), bd='0', anchor='nw', textvariable=result) 56. show_result.place(x="25", y="300", width="450", height="300") 57. 58. window.mainloop()
②实现可视化之后,原来V1.0和V2.0版本输出(print)的提示信息和获取用户输入(input),不再适用,此时要采用tk.StringVar().set()设置GUI界面的文本框展示信息以及tk.StringVar().get()获取用户在GUI界面输入的文本内容
(注意此处获取到的文本内容,均为StringVar类型而并非String,这是不可变数据类型),其余实现思路均类似于V2.0版本(此处以“修改学生信息”功能为例)
1. # 3、修改学生信息 2. def change(): 3. if LIST is None: 4. result.set("没有信息,无法修改") 5. return None 6. if len(LIST) == 0: 7. result.set("没有信息,无法修改") 8. return None 9. if len(LIST) != 0: 10. inputName = textName.get() 11. for i in range(0, len(LIST)): 12. if LIST[i]["name"] == inputName: 13. LIST[i]["sex"] = textSex.get() 14. LIST[i]["phone"] = textSex.get() 15. writeTxt_wMode(LIST) 16. result.set("修改成功") 17. 18. delete_Gui_StudentMessage() 19. return
③展示GUI界面实现结果