python之简易界面编程(模块搭建+界面搭建+功能完成)

4,文件写入

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

import pickle

险种对象

class Record:

record_id: str

record_name: str

record_money: float

record_type: str

重写构造

def init(self, record_id: str, record_name: str, record_money: str, record_type: str):

self.record_id = record_id

self.record_name = record_name

self.record_money = record_money

self.record_type = record_type

重写toString方法

def str(self):

return f’编号{self.record_id}名字{self.record_name}金额{self.record_money}缴费类型{self.record_type}’

if name==‘main’:

r = Record(‘10001’, ‘小宝’, 3000, ‘医疗保险’)

print®

with open(‘record.txt’,‘w’,encoding=‘utf-8’) as f:

#报错 TypeError: write() argument must be str, not bytes

b binary 二进制

with open(‘record.txt’, ‘wb’) as f:#wb写入二进制

pickle.dump(r,f)#把对象r放到文件f里

with open(‘record.txt’,‘rb’) as f:

print(pickle.load(f))

控制台运行结果

二,界面搭建

======

main包下的main文件

1,新建窗口

# 新建一个窗口

window=Tk()

2,为窗口设置标题

# 设置标题

window.title(‘险种管理’)

3,设置窗口大小

# 设置大小 widthxheightt+x+y

window.geometry(‘400x400+200+200’)

4,编写窗口内容

# 编写控件Treeview

table = 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文件,完整代码

import pickle

from pojo.record import Record

class RecordManager:

records: list = []

def init(self):

初始化后开始加载文件中的数据

with open(‘record.txt’, ‘rb’) as f:

data = f.read()

if data == b’':

loads直接指定二进制的数据

self.records = pickle.loads(f)

print(‘=======’,f.read())

load直接读取文件

self.records=pickle.load(f)

def add_record(self, record):

assert isinstance(record, Record)

self.records.append(record)

remove() 移除元素

pop() 移除下标

def delete_record(self, record_id: str):

for r in self.records:

assert isinstance(r, Record)

if r.record_id == record_id:

self.records.remove®

break

else:

print(“没有这个人”)

def print_record(self):

for r in self.records:

print®

def save_record(self):

with open(‘record.txt’, ‘wb’) as f:

pickle.dump(self.records, f)

manager = RecordManager()

manager.add_record(Record(‘10002’, ‘小🐖’, 5000, ‘生育保险’))

manager.add_record(Record(‘10003’, ‘小🐕’, 3000, ‘失业保险’))

manager.print_record()

manager.save_record()

Java中

序列化:将对象变成文件

反序列化:将文件变成对象

控制台运行结果

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文件,完整代码

GUI界面编程

界面包

from tkinter import *

from tkinter import simpledialog

from tkinter.ttk import Treeview

from tkinter import messagebox as message

from manager.recordManager import RecordManager

from pojo.record import Record

manager=RecordManager()

新建一个窗口

window=Tk()

设置标题

window.title(‘险种管理’)

设置大小 widthxheightt+x+y

window.geometry(‘400x400+200+200’)

增加

def add():

id=simpledialog.askstring(‘提示’,‘输入编号’)

name=simpledialog.askstring(‘提示’,‘输入名称’)

money=simpledialog.askstring(‘提示’,‘输入金额’)

type=simpledialog.askstring(‘提示’,‘输入类型’)

r=Record(id,name,money,type)

manager.add_record®

load()

删除

def delete():

message.showinfo(‘提示’,‘删除成功’)

if message.askyesno(‘提示’,‘是否删除’):

pass

获取被选中的行

if len(table.selection())>0:

获取当前这行数据

table.item(table.selection()[0])获得字典对象

[“values”]获取字典的值

id=table.item(table.selection()[0])[“values”][0]

manager.delete_record(str(id))

table.delete(table.selection()[0])

#加载

def load():

#1.获得所有元素

for i in table.get_children():

2.清空元素

print(i)

table.delete(i)

for r in manager.records:

assert isinstance(r,Record)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值