2017-07-26 1 views
0

J'ai un ComboBox avec des valeurs différentes à l'intérieur: Oui, NonQComboBox setCurrentIndex par texte

Puis-je régler la ComboBox par une valeur que je reçois d'une entrée? Je ne veux pas le mettre par index #. Je veux aussi essayer de rester à l'écart des déclarations if.

enter image description here

J'ai essayé quelque chose comme ceci:

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)) 
+0

Qui renvoie la fonction 'self.UnlHE_Drop.findText'? – eyllanesc

+0

qu'est-ce que 'UnlHE_Drop'? – eyllanesc

+0

En général, la solution semble correcte, à moins que l'utilisateur ne place des valeurs inappropriées. – eyllanesc

Répondre

1

Vous devez d'abord ajouter des éléments à la QComboBox depuis lorsque vous utilisez findText que vous cherchez ces articles, une autre chose est que QInputDialog .getText retourne un tuple, le premier est la valeur entrée et le second est un bool qui indique si vous avez appuyé sur oui ou non.

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) 
1

Une fois que la valeur est déjà une option int QComboBox vous pouvez utiliser setCurrentText(QString text) pour le définir à cette valeur.