Python GUI练习
来源:互联网 发布:网络营销策划的要素 编辑:程序博客网 时间:2024/06/04 17:55
这是一个小型的信息管理系统(不是通过数据库实现的)
主要是在此过程中重温了Ptyhon GUI设计的一些函数,以供以后参考用
import tkinterperson_list = []def ok_func(): name = name_entry.get() sex = sex_entry.get() age = age_entry.get() bloodtype = bloodtype_entry.get() constellation = constellation_entry.get() height = height_entry.get() weight = weight_entry.get() if name != '' and sex != '' and age != '' and bloodtype != '' and constellation != '' and height != '' and weight != '': add_person(Person(name, sex, age, bloodtype, constellation, height, weight)) clear_func() else: report_err()def search_func(): name = name_entry.get() sex = sex_entry.get() age = age_entry.get() bloodtype = bloodtype_entry.get() constellation = constellation_entry.get() height = height_entry.get() weight = weight_entry.get() r = find_from_list(Person(name, sex, age, bloodtype, constellation, height, weight)) if len(r) == 0: s = '未找到符合条件的数据' else: s = '' for p in r: s += p.info() s += '\n' result_text.delete(0.0,tkinter.END) result_text.insert(0.0,s)def find_from_list (p): global person_list result_list = [] for i in range(0,len(person_list)): if person_list[i].is_equal(p): result_list.append(person_list[i]) return result_listdef clear_func(): name_entry.delete(0,100) sex_entry.delete(0,100) age_entry.delete(0,100) bloodtype_entry.delete(0,100) constellation_entry.delete(0,100) height_entry.delete(0,100) weight_entry.delete(0,100) result_text.delete(0.0,tkinter.END)def read_data(): f = open('inputfile.txt','r') slist = f.readlines() f.close() for s in slist: s = s.replace('\n','') tl = s.split(' ') if len(tl) == 7: add_person(Person(tl[0], tl[1], tl[2], tl[3], tl[4], tl[5], tl[6])) else: report_err() breakdef data_output(): f = open('outputfile.txt','w') for p in person_list: f.write(p.info()+'\n') f.close()def report_err(): tkinter.messagebox.askokcancel('错误','关键信息缺失')def add_person(p): global person_list person_list.append(p)def backspace_func(e): e.delete(len(e.get())-1)class Person: def __init__ (self, name, sex, age, bloodtype, constellation, height, weight ): self.name = name self.sex = sex self.age = age self.bloodtype = bloodtype self.constellation = constellation self.height = height self.weight = weight def info(self): return 'name:'+str(self.name)+' sex:'+str(self.sex)+' age:'+str(self.age)\ +' bloodtype:'+str(self.bloodtype) +' constellation:'+str(self.constellation)\ +' height:'+str(self.height)+' weight:'+str(self.weight) def is_equal(self,p): res = True if p.name != '' and self.name != p.name: res = False if p.sex != '' and self.sex != p.sex: res = False if p.age != '' and self.age != p.age: res = False if p.bloodtype != '' and self.bloodtype != p.bloodtype: res = False if p.constellation != '' and self.constellation != p.constellation: res = False if p.height != '' and self.height != p.height: res = False if p.weight != '' and self.weight != p.weight: res = False return resroot = tkinter.Tk()root.geometry('600x500')frame1 = tkinter.Frame(root)frame2 = tkinter.Frame(root)root.title("信息录入与查找系统")name_label = tkinter.Label(frame1,text="姓名")sex_label = tkinter.Label(frame1,text="性别")age_label = tkinter.Label(frame1,text="年龄")bloodtype_label = tkinter.Label(frame1,text="血型")constellation_label = tkinter.Label(frame1,text="星座")height_label = tkinter.Label(frame1,text="身高")weight_label = tkinter.Label(frame1,text="体重")name_entry = tkinter.Entry(frame1)sex_entry = tkinter.Entry(frame1)age_entry = tkinter.Entry(frame1)bloodtype_entry = tkinter.Entry(frame1)constellation_entry = tkinter.Entry(frame1)height_entry = tkinter.Entry(frame1)weight_entry = tkinter.Entry(frame1)result_text = tkinter.Text(frame2,height=20,width = 100)name_backspace = tkinter.Button(frame1,text="退格",command=lambda:backspace_func(name_entry))sex_backspace = tkinter.Button(frame1,text="退格",command=lambda:backspace_func(sex_entry))age_backspace = tkinter.Button(frame1,text="退格",command=lambda:backspace_func(age_entry))bloodtype_backspace = tkinter.Button(frame1,text="退格",command=lambda:backspace_func(bloodtype_entry))constellation_backspace = tkinter.Button(frame1,text="退格",command=lambda:backspace_func(constellation_entry))height_backspace = tkinter.Button(frame1,text="退格",command=lambda:backspace_func(height_entry))weight_backspace = tkinter.Button(frame1,text="退格",command=lambda:backspace_func(weight_entry))ok_button = tkinter.Button(frame1,text="确定",command=lambda:ok_func())search_button = tkinter.Button(frame1,text="查找",command=lambda:search_func())clear_button = tkinter.Button(frame1,text="清除",command=lambda:clear_func())filein_button = tkinter.Button(frame1,text="文件输入",command=lambda:read_data())fileout_button = tkinter.Button(frame1,text="文件导出",command=lambda:data_output())#设置布局name_label.grid(row=0,column = 0)name_entry.grid(row=0,column=1)name_backspace.grid(row=0,column=2)sex_label.grid(row=1,column = 0)sex_entry.grid(row=1,column=1)sex_backspace.grid(row=1,column=2)age_label.grid(row=2,column = 0)age_entry.grid(row=2,column=1)age_backspace.grid(row=2,column=2)bloodtype_label.grid(row=3,column = 0)bloodtype_entry.grid(row=3,column=1)bloodtype_backspace.grid(row=3,column=2)constellation_label.grid(row=4,column = 0)constellation_entry.grid(row=4,column=1)constellation_backspace.grid(row=4,column=2)height_label.grid(row=5,column = 0)height_entry.grid(row=5,column=1)height_backspace.grid(row=5,column=2)weight_label.grid(row=6,column = 0)weight_entry.grid(row=6,column=1)weight_backspace.grid(row=6,column=2)ok_button.grid(row=7,column=0)clear_button.grid(row=7,column=2)filein_button.grid(row=8,column=0)fileout_button.grid(row=8,column=1)result_text.grid(row=9,column=2)frame1.pack()frame2.pack()root.mainloop()
0 0
- python gui 练习
- Python GUI练习
- [Python]GUI编程练习 -- 获取天气预报
- python项目练习九:文件共享2-GUI版本
- python项目练习九:文件共享2-GUI版本
- python项目练习九:文件共享2-GUI版本
- 25-GUI-10-GUI(练习)
- Python GUI
- python gui
- Python GUI
- Python GUI
- python-gui
- python GUI
- GUI的几个练习~
- 黑马程序员-GUI练习
- java-GUI小练习
- GUI菜单练习
- Java gui练习
- PHP 数据库连接池实现
- 今天把我以前封装的简单的框架拿出来,给初学的兄弟先感受一下
- 算法设计与分析题目练习四:井字棋(启发式算法)
- [路由] -- Yii2 url地址美化与重写
- MySQL修改数据表存储引擎的3种方法介绍
- Python GUI练习
- linux 常用命令
- linux如何真确关机
- MVC封装框架 第一步 (分析mvc框架运行流程)
- 【Java】【Jar】创建Jar
- 表单中按钮问题
- OpenJudge 1.5救援
- 细胞问题-ssl 2324
- 三种获取网页源码的方法(使用MFC/Socket实现)