Source code for sas.qtgui.Perspectives.Fitting.AssociatedComboBox

from PyQt5 import QtGui, QtWidgets


[docs]class AssociatedComboBox(QtWidgets.QComboBox): """Just a regular combo box, but associated with a particular QStandardItem so that it can be used to display and select an item's current text and a restricted list of other possible text. When the combo box's current text is changed, the change is immediately reflected in the associated item; either the text itself is set as the item's data, or the current index is used; see constructor.""" item = None # type: QtGui.QStandardItem def __init__(self, item, idx_as_value=False, parent=None): # type: (QtGui.QStandardItem, bool, QtWidgets.QWidget) -> None """ Initialize widget. idx_as_value indicates whether to use the combo box's current index (otherwise, current text) as the associated item's new data. """ super(AssociatedComboBox, self).__init__(parent) self.item = item if idx_as_value: self.currentIndexChanged[int].connect(self._onIndexChanged) else: self.currentTextChanged.connect(self._onTextChanged) def _onTextChanged(self, text): # type: (str) -> None """ Callback for combo box's currentTextChanged. Set associated item's data to the new text. """ self.item.setText(text) def _onIndexChanged(self, idx): # type: (int) -> None """ Callback for combo box's currentIndexChanged. Set associated item's data to the new index. """ self.item.setText(str(idx))