QComboBox setCurrentIndex 通过文本

QComboBox setCurrentIndex by text

我有一个 ComboBox,里面有不同的值:是,不是。

我可以通过从输入中收到的值来设置 ComboBox 吗?我不想通过索引#设置它。我也想尽量远离 if 语句。

我试过这样的事情:

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

首先,您必须向 QComboBox 添加项目,因为当您使用 findText 时,您正在寻找这些项目,另一件事是 QInputDialog.getText returns 一个元组,第一个是输入的值,第二个是一个布尔值,表示您是否按下了“是”或“否”。

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)

一旦该值已经是 QComboBox 中的一个选项,您可以使用 setCurrentText(QString text) 将其设置为该值。