class FilteredPopupListPanel(Widget): def __init__(self, parent, items, parent_window, icon=None): super().__init__(parent) self.popupBtn = PopupButton(parent, items[0]) popup = self.popupBtn.popup() popup.setLayout(GroupLayout()) self.list_panel = FilteredListPanel(popup, items, parent_window) self.list_panel.setSelectedIndex(0) def setSelectedIndex(self, i): self.popupBtn.setCaption(self.list_panel.items[i]) self.list_panel.setSelectedIndex(i) def setCallback(self, cb): def cb_wrapper(value): self.popupBtn.setCaption(self.list_panel.items[value]) cb(value) self.list_panel.setCallback(cb_wrapper)