树控件的增删改
界面展示
功能描述
- 单击树控件,在右侧显示该项目的名称等信息;
- 双击项目前的 + 或者 - ,可以折叠或者打开该节点;
- 右键点击项目,弹出菜单,可以:增加同级、增加下级、删除项目;
- 默认项目信息为只读状态。点击 编辑、保存 按钮可以作相应操作;
- 程序数据来自 sqlite数据库,在DataBase类中,可以创建表并插入初始数据(可以不插入初始化数据)。
程序代码
import wx
import sqlite3
class DataBase:
"""演示数据库"""
def __init__(self):
self.conn = sqlite3.connect('MyData.db')
self.cur = self.conn.cursor()
def create_table_type(self, drop_exit=False):
"""创建产品类别表"""
table = 'base_goods_type'
sql_text = f"""create table {
table} (
编号 int primary key not null,
名称 varchar(20) not null,
描述 varchar(50),
上级编号 int not null,
ABC分类 char(1) default '');
"""
if drop_exit:
self.cur.execute(f"drop table {
table}")
self.cur.execute(sql_text)
self.conn.commit()
return True
def init_table_type(self):
rows = ((1001, '电动自行车', '', 0, 'A'),
(1002, '普通自行车', '', 0, 'A'),
(1003, '车辆配件', '', 0, 'B'),
(1004, '其他产品', '', 0, 'C'),
(1005, '普通电动自行车', '', 1001, 'A'),
(1006, '电动滑板车', '', 1001, 'A'),
(1007, '电动摩托车', '', 1001, 'A'),
(1008, '通勤自行车', '', 1002, 'A'),
(1009, '山地自行车', '', 1002, 'A'),
(1010, '公路自行车', '', 1002, 'A'),
(1011, '维修配件', '', 1003, 'B'),
(1012, '改装配件', '', 1003, 'B'),
(1013, '其他配件', '', 1003, 'B'),
(1014, '锁具', '', 1004, 'C'),
(1015, '个人防护', '', 1004, 'C'))
table = 'base_goods_type'
self.cur.execute(f"delete from {
table};")
self.conn.commit()
return self.insert_rows(table, rows)
def get_data(self, table, condition=None):
if condition:
sql_text = f"select * from {
table} where {
condition};"
else:
sql_text = f"select * from {
table};"
self.cur.execute(sql_text)
return self.cur.fetchall()
def get_max_id(self, table, pk_name