企业网站定制开发python之简易界面编程(模块搭建+界面搭建+功能完成)

目录


一,模块搭建

1,企业网站定制开发定义险种对象

2,构造

3,重写toString

4,文件写入

pojo包下面的record文件,完整代码

  1. import pickle
  2. # 险种对象
  3. class Record:
  4. record_id: str
  5. record_name: str
  6. record_money: float
  7. record_type: str
  8. # 重写构造
  9. def __init__(self, record_id: str, record_name: str, record_money: str, record_type: str):
  10. self.record_id = record_id
  11. self.record_name = record_name
  12. self.record_money = record_money
  13. self.record_type = record_type
  14. # 重写toString方法
  15. def __str__(self):
  16. return f'编号{self.record_id}名字{self.record_name}金额{self.record_money}缴费类型{self.record_type}'
  17. if __name__=='__main__':
  18. r = Record('10001', '小宝', 3000, '医疗保险')
  19. print(r)
  20. # with open('record.txt','w',encoding='utf-8') as f:
  21. #报错 TypeError: write() argument must be str, not bytes
  22. # b binary 二进制
  23. # with open('record.txt', 'wb') as f:#wb企业网站定制开发写入二进制
  24. # pickle.dump(r,f)#把对象r放到文件f里
  25. with open('record.txt','rb') as f:
  26. print(pickle.load(f))

企业网站定制开发控制台运行结果

二,界面搭建

main包下的main文件

1,新建窗口

# 企业网站定制开发新建一个窗口window=Tk()

2,为窗口设置标题 

# 设置标题window.title('险种管理')

3,设置窗口大小 

# 设置大小  widthxheightt+x+ywindow.geometry('400x400+200+200') 

4,编写窗口内容

# 编写控件Treeviewtable = Treeview(columns=('id','name','money','type'),show='headings')table.column('id',width=100)table.column('name',width=100)table.column('money',width=100)table.column('type',width=100)table.heading('id',text='记录编号')table.heading('name',text='缴费者')table.heading('money',text='缴费金额')table.heading('type',text='缴费类型')

5,显示窗口 

# 让控件显示
table.pack() 

6,运行窗口 

# 让窗口运行window.mainloop()

 控制台运行效果

三,功能完成

1,增加:追加

2,根据下标删除,移除元素,注意不是移除下标

注意:

loads直接指定二进制的数据
load直接读取文件

manager包下recordManager文件,完整代码

  1. import pickle
  2. from pojo.record import Record
  3. class RecordManager:
  4. records: list = []
  5. def __init__(self):
  6. # 初始化后开始加载文件中的数据
  7. with open('record.txt', 'rb') as f:
  8. data = f.read()
  9. if data == b'':
  10. # loads直接指定二进制的数据
  11. self.records = pickle.loads(f)
  12. # print('=======',f.read())
  13. # load直接读取文件
  14. # self.records=pickle.load(f)
  15. def add_record(self, record):
  16. assert isinstance(record, Record)
  17. self.records.append(record)
  18. # remove() 移除元素
  19. # pop() 移除下标
  20. def delete_record(self, record_id: str):
  21. for r in self.records:
  22. assert isinstance(r, Record)
  23. if r.record_id == record_id:
  24. self.records.remove(r)
  25. break
  26. else:
  27. print("没有这个人")
  28. def print_record(self):
  29. for r in self.records:
  30. print(r)
  31. def save_record(self):
  32. with open('record.txt', 'wb') as f:
  33. pickle.dump(self.records, f)
  34. manager = RecordManager()
  35. manager.add_record(Record('10002', '小🐖', 5000, '生育保险'))
  36. manager.add_record(Record('10003', '小🐕', 3000, '失业保险'))
  37. manager.print_record()
  38. manager.save_record()
  39. # Java中
  40. # 序列化:将对象变成文件
  41. # 反序列化:将文件变成对象

控制台运行结果

 1,增加:

from tkinter import simpledialog-----导包

simpledialog.askstring('title','prompt')----提示标题,提示

 2,删除

①获取被选中的行

②获取这行的数据(获取这行的字典对象,获取字典对象的值)

# 获取被选中的行if len(table.selection())>0:    # 获取当前这行数据    # table.item(table.selection()[0])获得字典对象    # ["values"]获取字典的值    id=table.item(table.selection()[0])["values"][0]

3,加载

①获取所有的元素

②清空元素

注意:END是一个常量

4,保存

main包下main文件,完整代码

  1. # GUI界面编程
  2. # 界面包
  3. from tkinter import *
  4. from tkinter import simpledialog
  5. from tkinter.ttk import Treeview
  6. from tkinter import messagebox as message
  7. from manager.recordManager import RecordManager
  8. from pojo.record import Record
  9. manager=RecordManager()
  10. # 新建一个窗口
  11. window=Tk()
  12. # 设置标题
  13. window.title('险种管理')
  14. # 设置大小 widthxheightt+x+y
  15. window.geometry('400x400+200+200')
  16. # 增加
  17. def add():
  18. id=simpledialog.askstring('提示','输入编号')
  19. name=simpledialog.askstring('提示','输入名称')
  20. money=simpledialog.askstring('提示','输入金额')
  21. type=simpledialog.askstring('提示','输入类型')
  22. r=Record(id,name,money,type)
  23. manager.add_record(r)
  24. load()
  25. # 删除
  26. def delete():
  27. # message.showinfo('提示','删除成功')
  28. if message.askyesno('提示','是否删除'):
  29. # pass
  30. # 获取被选中的行
  31. if len(table.selection())>0:
  32. # 获取当前这行数据
  33. # table.item(table.selection()[0])获得字典对象
  34. # ["values"]获取字典的值
  35. id=table.item(table.selection()[0])["values"][0]
  36. manager.delete_record(str(id))
  37. table.delete(table.selection()[0])
  38. #加载
  39. def load():
  40. #1.获得所有元素
  41. for i in table.get_children():
  42. # 2.清空元素
  43. print(i)
  44. table.delete(i)
  45. for r in manager.records:
  46. assert isinstance(r,Record)
  47. table.insert('',END,value=(r.record_id,r.record_name,r.record_money,r.record_type))
  48. # END是一个常量
  49. def save():
  50. manager.save_record()
  51. # 编写控件Treeview
  52. table = Treeview(columns=('id','name','money','type'),show='headings')
  53. table.column('id',width=100)
  54. table.column('name',width=100)
  55. table.column('money',width=100)
  56. table.column('type',width=100)
  57. table.heading('id',text='记录编号')
  58. table.heading('name',text='缴费者')
  59. table.heading('money',text='缴费金额')
  60. table.heading('type',text='缴费类型')
  61. # 让控件显示
  62. table.pack()
  63. # command指令。调用方法
  64. Button(text='增加',command=add).pack()
  65. Button(text='删除',command=delete).pack()
  66. Button(text='加载',command=load).pack()
  67. Button(text='保存',command=save).pack()
  68. # 让窗口运行
  69. window.mainloop()

运行效果

点击加载 ,数据显示

 

点击增加

 

 

 

 选中一条数据点击删除

可以删除成功

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发