certflow.widgets package¶
Submodules¶
- certflow.widgets.button_row module
- certflow.widgets.confirm_dialog module
- certflow.widgets.data_table module
- certflow.widgets.dialog_button_bar module
- certflow.widgets.enhanced_table module
- certflow.widgets.filter_bar module
FilterBarFilterBar.conditions_changedFilterBar.set_columns()FilterBar.add_row()FilterBar.remove_row()FilterBar.clear_rows()FilterBar.ensure_at_least_one_row()FilterBar.rows_data()FilterBar.rows()FilterBar.get_conditions()FilterBar.collect_conditions()FilterBar.find_row_by_field()FilterBar.set_quick_search_items()FilterBar.set_quick_search_placeholder()FilterBar.set_presets()FilterBar.staticMetaObjectFilterBar.active_preset()
- certflow.widgets.filter_row module
- certflow.widgets.flow_layout module
- certflow.widgets.quick_search module
- certflow.widgets.quick_search_preset module
build_quick_search_plan()split_quick_search_text()QuickSearchPresetMixinQuickSearchPresetMixin.setup_quick_search_preset()QuickSearchPresetMixin.get_quick_search_mode()QuickSearchPresetMixin.qsp_on_mode_changed()QuickSearchPresetMixin.qsp_on_preset_changed()QuickSearchPresetMixin.qsp_get_quick_search_items()QuickSearchPresetMixin.qsp_get_field_label()QuickSearchPresetMixin.qsp_on_typing()QuickSearchPresetMixin.qsp_on_quick_search()
- certflow.widgets.section_card module
Module contents¶
自定义控件包(widgets)。
提供增强表格等 PySide6 自定义窗口部件,以及 UI 重构的共享控件, 避免各窗体重复造轮子:
EnhancedTable:服务端排序 / 列显隐 / 复制 / 排序指示器。SectionCard:统一「Section 卡片」容器(标题 + 内容布局,字段列不拉伸)。ActionToolbar:按钮簇工具栏(按内容定宽,不 addStretch 均分)。面向**视图顶部工具条** (「新增/编辑/删除/刷新」之类),与对话框底部按钮栏职责分离。DialogButtonBar:确认 / 取消 / 应用 按钮栏。面向**对话框底部**,发出accepted/rejected/applied信号,供BaseDialog直接接线。ConfirmDialog:统一的危险操作二次确认(danger)。供BaseDialog.confirm_danger及任意视图复用,集中危险样式与文案,替代手写QMessageBox.question。DataTable:表格初始化封装(列元数据 → 表头 + 选择/编辑行为)。FlowLayout:自动换行布局(根治「占整行」)。QuickSearch:可编辑模糊匹配快查框(控件及其预设逻辑 mixinQuickSearchPresetMixin同处本包)。FilterBar:筛选条件容器(N 个FilterRowWidget+ 添加按钮 + 可选快查框),汇总为统一条件契约。FilterRowWidget:单条筛选行控件(字段/操作符/值栈),数据源无关、可复用。
- class certflow.widgets.EnhancedTable(parent=None)[源代码]¶
基类:
QTableWidget增强表格控件
功能: - 点击列头触发服务端排序(排序全量数据,非仅当前页) - 右键菜单隐藏/显示列 - Ctrl+C 复制选中单元格 - Ctrl+A 全选 - 交替行颜色 - 排序指示器显示
- 参数:
parent (QWidget | None)
- column_config_changed¶
- sort_requested¶
- keyPressEvent(event)[源代码]¶
处理键盘快捷键事件
支持 Ctrl+C 复制选中单元格、Ctrl+A 全选。
- 参数:
event (QKeyEvent) -- 键盘事件对象
- 返回类型:
None
- staticMetaObject = PySide6.QtCore.QMetaObject("EnhancedTable" inherits "QTableWidget": Methods: #110 type=Signal, signature=column_config_changed() #111 type=Signal, signature=sort_requested(QString,bool), parameters=QString, bool )¶
- class certflow.widgets.SectionCard(title='', icon='', parent=None)[源代码]¶
基类:
QGroupBox带标题的内容卡片。
用法:
card = SectionCard("基本配置", icon="⚙️") card.add_field("工作表:", self.sheet_combo) card.content.addWidget(self.some_widget)
- property content: QVBoxLayout¶
返回内容主布局,调用方往里加控件/子布局。
- add_field(label, widget)[源代码]¶
追加一行「标签 + 控件」,字段列按 sizeHint 定宽(不拉伸、不占整行)。
- 参数:
label (str)
widget (QWidget)
- 返回类型:
QWidget
- staticMetaObject = PySide6.QtCore.QMetaObject("SectionCard" inherits "QGroupBox": )¶
- class certflow.widgets.ActionToolbar(parent=None, align='left')[源代码]¶
基类:
QWidget一排动作按钮,按内容定宽。
用法:
bar = ActionToolbar() bar.add_button("➕ 新增", self.on_add) bar.add_button("🗑️ 删除", self.on_delete, danger=True) bar.add_stretch() bar.add_button("🔄 刷新", self.refresh)
- 参数:
parent (QWidget | None)
align (str)
- add_button(label, slot=None, tooltip=None, primary=False, danger=False)[源代码]¶
追加一个按钮;
slot不为空则连接点击事件。
- staticMetaObject = PySide6.QtCore.QMetaObject("ActionToolbar" inherits "QWidget": )¶
- class certflow.widgets.DialogButtonBar(parent=None, show_apply=False, confirm_text='确认', cancel_text='取消')[源代码]¶
基类:
QWidget确认 / 取消 / 应用 按钮栏。
- accepted¶
- rejected¶
- applied¶
- staticMetaObject = PySide6.QtCore.QMetaObject("DialogButtonBar" inherits "QWidget": Methods: #33 type=Signal, signature=accepted() #34 type=Signal, signature=rejected() #35 type=Signal, signature=applied() )¶
- class certflow.widgets.ConfirmDialog[源代码]¶
基类:
object危险操作确认助手(静态方法,不持有状态)。
- class certflow.widgets.DataTable(columns=None, parent=None)[源代码]¶
基类:
QTableWidget开箱即用的只读单选表格。
用法:
table = DataTable(["ID", "名称", "状态"]) # 或 table = DataTable([("ID", "id"), ("名称", "name")])
- staticMetaObject = PySide6.QtCore.QMetaObject("DataTable" inherits "QTableWidget": )¶
- class certflow.widgets.FlowLayout(parent=None, margin=0, spacing=-1)[源代码]¶
基类:
QLayout流布局:水平排布子项,超出宽度自动换行。
- staticMetaObject = PySide6.QtCore.QMetaObject("FlowLayout" inherits "QLayout": )¶
- class certflow.widgets.QuickSearch(parent=None, *, placeholder='', min_width=260, filter_mode=<MatchFlag.MatchContains: 1>)[源代码]¶
基类:
QComboBox可编辑模糊匹配快查框。
- typing¶
- activated¶
- staticMetaObject = PySide6.QtCore.QMetaObject("QuickSearch" inherits "QComboBox": Methods: #46 type=Signal, signature=typing(QString), parameters=QString #47 type=Signal, signature=activated(QString), parameters=QString )¶
- class certflow.widgets.FilterBar(parent=None, *, columns=None, field_op_map=None, field_choices_map=None, operators=None, is_dark_theme_fn=None, load_combo_values_fn=None, open_date_picker_fn=None, date_button_style_fn=None, grid_cols=2, show_quick_search=False, quick_search_placeholder='', quick_search_callback=None, quick_search_typing_callback=None, show_preset_selector=False, presets=None, preset_changed_callback=None)[源代码]¶
基类:
QWidget筛选条件容器。
- 参数:
- conditions_changed¶
- find_row_by_field(field_name)[源代码]¶
查找指定字段的筛选行。
- 参数:
field_name (str)
- 返回类型:
FilterRowWidget | None
- staticMetaObject = PySide6.QtCore.QMetaObject("FilterBar" inherits "QWidget": Methods: #33 type=Signal, signature=conditions_changed() )¶
- class certflow.widgets.FilterRowWidget(parent=None, *, columns, field_op_map, operators, field_choices_map=None, is_dark_theme_fn=None, load_combo_values_fn=None, open_date_picker_fn=None, date_button_style_fn=None, field_name=None, operator=None, value=None)[源代码]¶
基类:
QWidget单条筛选条件行。
- 信号:
value_changed:值输入框变化(应触发防抖搜索)。 structure_changed:字段 / 操作符变化(应触发快筛脱离,不触发搜索)。 remove_requested:请求删除本行。
- 参数:
- value_changed¶
- structure_changed¶
- remove_requested¶
- get_condition()[源代码]¶
返回标准化条件
{field: {value, operator}},无效则返回 None。注意:区间(between)操作符的值存于
value_edit_min/max,单值框为空, 因此not value的跳过判定仅适用于非区间、非无值操作符。- 返回类型:
dict | None
- row_data()[源代码]¶
返回与原
query_view行字典同键的**持久**字典,便于迁移期最小改动接入。返回的字典在控件生命周期内保持稳定引用,迁移期 query_view 的快筛/保存逻辑 可直接对其中的
_is_manual/_quick_filter_button等标记做增删改并持久化。- 返回类型:
- staticMetaObject = PySide6.QtCore.QMetaObject("FilterRowWidget" inherits "QWidget": Methods: #33 type=Signal, signature=value_changed() #34 type=Signal, signature=structure_changed() #35 type=Signal, signature=remove_requested() )¶