QtFilterEdit#
Filter-token entry widgets for building simple search and match expressions.
Screenshot#

Example#
Source: examples/qt_filter_edit.py
"""QtActiveProgressBarButton."""
from qtpy.QtWidgets import QApplication, QLabel, QVBoxLayout, QWidget
from qtextra.config import THEMES
from qtextra.widgets.qt_filter_edit import QtFilterEdit
app = QApplication([])
widget = QWidget()
THEMES.apply(widget)
layout = QVBoxLayout()
widget.setLayout(layout)
layout.addWidget(QLabel("QtFilterEdit"))
layout.addWidget(filter_edit := QtFilterEdit())
[filter_edit.add_filter(f"Filter {i}") for i in range(5)]
layout.addWidget(QLabel("QtFilterEdit with options above the text edit"))
layout.addWidget(filter_edit := QtFilterEdit(above=True))
[filter_edit.add_filter(f"Filter {i}") for i in range(5)]
layout.addWidget(QLabel("QtFilterEdit with flow layout"))
layout.addWidget(filter_edit := QtFilterEdit(flow=True))
[filter_edit.add_filter(f"Filter {i}") for i in range(10)]
layout.addWidget(QLabel("QtFilterEdit with AND / OR switch"))
layout.addWidget(filter_edit := QtFilterEdit(enable_switch=True))
[filter_edit.add_filter(f"Filter {i}") for i in range(5)]
layout.addStretch()
widget.show()
app.exec_()
Notes#
- Supports standard stacked layout, above-input controls, flow layouts, and an AND/OR mode switch.
API#
Qt Class#
Signals#
evt_filters_changed#
Methods#
Scrollable edit..
addFilter = add_filter
class-attribute
instance-attribute
#
emitCurrentFilters = emit_current_filters
class-attribute
instance-attribute
#
getFilters = get_filters
class-attribute
instance-attribute
#
mode: str | None
property
#
Get mode.
onAdd = on_add
class-attribute
instance-attribute
#
onRemove = on_remove
class-attribute
instance-attribute
#
onRemoveAll = on_remove_all
class-attribute
instance-attribute
#
add_filter(text: str) -> None
#
Add filter.
emit_current_filters() -> None
#
Emit current filters.
get_filters(current: bool = False) -> list[str]
#
Get list of currently selected filters.
on_add() -> None
#
Add filter.
on_add_action() -> None
#
This is a workaround some minor issues with action being triggered twice.
on_remove(text: str) -> None
#
Remove filter.
on_remove_all() -> None
#
Remove all filters.
on_update(text: str) -> None
#
Update filter.