added DictList: DictListWidget with search box

This commit is contained in:
2023-01-03 00:22:40 +01:00
parent 2d5f3b9e98
commit 069a7ff110
2 changed files with 42 additions and 2 deletions

View File

@ -1,5 +1,6 @@
from .dictlistitem import DictListItem
from .dictlistwidget import DictListWidget
#from .dictlistitem import DictListItem
#from .dictlistwidget import DictListWidget
from .dictlist import DictList as DictListWidget #TODO: clean this up

39
grum/dictlist/dictlist.py Normal file
View File

@ -0,0 +1,39 @@
from PyQt5.QtWidgets import QWidget, QLineEdit, QVBoxLayout
from .dictlistwidget import DictListWidget
class DictList(QWidget):
def __init__(self, *args, **kwargs):
super().__init__()
search = QLineEdit()
search.setPlaceholderText("Search...")
self.lst = lst = DictListWidget(*args, **kwargs)
lay = QVBoxLayout()
lay.setContentsMargins(0, 0, 0, 0)
lay.setSpacing(2)
lay.addWidget(lst)
lay.addWidget(search)
self.setLayout(lay)
# QWidget has an update method already
self.update = lst.update
search.textChanged.connect(self.hide_not_matching)
# behave like encapsulated DictListWidget
def __getattr__(self, name):
return getattr(self.lst, name)
def hide_not_matching(self, pattern):
for name, itm in self.lst.items.items():
state = (pattern not in name)
itm.setHidden(state)