Skip to content

QtFilterEdit#

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

Screenshot#

qt filter edit

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#

QWidget

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.