dre
dre

Reputation: 183

QComboBox setCurrentIndex by text

I have a ComboBox with different values inside: Yes, No.

Can I set the ComboBox by a value I receive from an input? I don't want to set it by index#. I also want to try to stay away from if statements.

enter image description here

I've tried something like this:

    self.UnlHE_Drop = QtWidgets.QComboBox(self.scrollAreaWidgetContents)
    self.UnlHE_Drop.setObjectName("UnlHE_Drop")
    self.UnlHE_Drop.addItem("")
    self.UnlHE_Drop.setItemText(0, "")
    self.UnlHE_Drop.addItem("")
    self.UnlHE_Drop.addItem("")

def retranslateUi(self, VlS):
    _translate = QtCore.QCoreApplication.translate
    VlS.setWindowTitle(_translate("VlS", "Value"))
    self.UnlHE_Drop.setItemText(1, _translate("VlS", "Yes"))
    self.UnlHE_Drop.setItemText(2, _translate("VlS", "No"))
    self.UnlHE_DropInfo = QInputDialog.getText(None, 'Answer:', 'Yes or No:')
    self.UnlHE_Drop.setCurrentIndex(self.UnlHE_Drop.findText(self.UnlHE_DropInfo))

Upvotes: 0

Views: 6022

Answers (2)

eyllanesc
eyllanesc

Reputation: 243907

First you have to add items to the QComboBox since when you use findText you are looking for those items, Another thing is that QInputDialog.getText returns a tuple, the first is the value entered and the second is a bool that indicates whether you pressed yes or no.

self.UnlHE_Drop = QtWidgets.QComboBox(self.scrollAreaWidgetContents)
self.UnlHE_Drop.addItems(["Yes", "No"])
UnlHE_DropInfo, ok = QInputDialog.getText(None, 'Answer:', 'Yes or No:')
if ok:
    self.UnlHE_Drop.setCurrentText(UnlHE_DropInfo)

Upvotes: 2

Omari Celestine
Omari Celestine

Reputation: 1435

Once the value is already an option int the QComboBox you can use setCurrentText(QString text) to set it to that value.

Upvotes: 1

Related Questions