mthoutai

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

一、效果展示截图

在这里插入图片描述
在这里插入图片描述

二、特色说明

1. 界面设计美观:

使用了绿色主题,搭配白色背景,视觉效果清新。
采用了无边框设计(frameless),给人现代感。
顶部有应用标题和功能图标,布局合理。

2. 标签式导航:

使用了六个主要功能标签,每个标签都有图标和文字说明。
标签点击后会改变颜色,提供视觉反馈。

3. 数据持久化:

使用 SQLite 数据库存储购物清单项目,确保数据可以长期保存。

4. 功能丰富:

可以添加、删除、标记已购买的商品。
提供列表视图和表格视图两种方式展示购物清单。
支持批量删除已购买的商品。

5. 响应式设计:

窗口大小固定,但内部布局能够适应不同内容。
使用 ListView 实现长列表的滚动效果。

6. 自定义组件:

创建了自定义的标签组件,包含图标和文字。
商品列表项使用了自定义的容器设计,包括复选框和居中文本。

7. 模块化结构:

代码组织清晰,使用类的方式封装了应用的各个功能。
将不同页面的内容分别定义,便于管理和扩展。

8. 交互设计:

提供了添加、保存、删除等快捷操作按钮。
标签切换时有明显的视觉反馈。

9. 关于页面:

包含了一个圆形的 logo 图像和应用信息,体现了个性化设计。

10. 错误处理:

虽然代码中没有明确的错误处理机制,但基本的输入验证(如空输入检查)已经实现。

11. 可扩展性:

预留了"添加商品"、“保存商品”、"删除商品"等标签页面,为未来功能扩展做好了准备。

12. 小结

总的来说,这个应用展示了如何使用 Flet 框架创建一个功能完整、界面美观的桌面应用程序。它结合了数据库操作、UI 设计和用户交互等多个方面,是一个很好的实践示例。

三、购物清单桌面程序ShoppingListApp 实现原理深度解析

这个应用是一个功能完整的桌面购物清单程序,使用 Flet 框架和 SQLite 数据库。让我详细解析其实现原理:

1. 应用架构设计

1.1 类结构设计

class ShoppingListApp:
def __init__(self):
self.page = None
self.items = []
self.current_tab = None
self.name_field = None
self.list_view = None
self.data_table = None
self.tab_contents = None

解析

  • 面向对象设计:将所有功能封装在类中,提高代码可维护性
  • 状态管理:使用实例变量管理应用状态
  • 组件引用:保存关键UI组件的引用,便于后续操作

1.2 常量配置

DB_NAME = 'shopping_list.db'
PRIMARY_COLOR = ft.colors.GREEN_500
SECONDARY_COLOR = ft.colors.GREEN_400
BG_COLOR = ft.colors.WHITE
WINDOW_WIDTH = 1248
WINDOW_HEIGHT = 840

解析

  • 配置集中管理:便于统一修改和维护
  • 色彩主题:定义统一的设计语言
  • 响应式尺寸:固定窗口尺寸确保布局稳定性

2. 数据层设计

2.1 数据库初始化

def init_db(self):
if not os.path.exists(DB_NAME):
with sqlite3.connect(DB_NAME) as conn:
c = conn.cursor()
c.execute('''CREATE TABLE items (name TEXT, checked INTEGER)''')

解析

  • 懒加载创建:只在数据库不存在时创建表
  • 上下文管理器:使用with语句自动管理连接
  • 简单表结构:只存储商品名称和勾选状态

2.2 CRUD 操作封装

def add_item_to_db(self, name, checked=0):
with sqlite3.connect(DB_NAME) as conn:
c = conn.cursor()
c.execute("INSERT INTO items VALUES (?, ?)", (name, checked))
def get_items_from_db(self):
with sqlite3.connect(DB_NAME) as conn:
c = conn.cursor()
c
posted on 2025-10-30 15:28  mthoutai  阅读(5)  评论(0)    收藏  举报