像 Html 这样的 Pyqt 组合框

Pyqt Combobox like Html

我正在使用 PyQt5,我想为 QComboBox 中的每个项目分配一个值,例如 HTML 组合框。

我知道我可以获取所选项目或索引,但我想获取值。

例如 HTML:

 <select>
  <option value="0.18">Name 1</option>
  <option value="0.36">Name 2</option>
  <option value="0.40">Name 3</option>
  <option value="0.43">Name 4</option>
</select> 

是否可以这样做?

您可以使用 userData 执行此操作,这里是一个工作示例

from PyQt4 import QtGui, QtCore
import sys


class Example(QtGui.QWidget):
    def __init__(self):
        super(Example, self).__init__()
        self.initUI()

    def initUI(self):
        self.btn = QtGui.QComboBox(self)
        dataToAdd = {"Name 1" : 0.18, "Name 2" : 0.36, "Name 3" : 0.41, "Name 4" : 0.43,}
        self.btn.addItem("Select")
        for eachItem in dataToAdd:
            val = dataToAdd[eachItem]
            self.btn.addItem(eachItem, userData=QtCore.QVariant(str(val)))
        self.btn.move(20, 20)
        self.setGeometry(300, 300, 290, 150)
        self.btn.currentIndexChanged.connect(self.foo)
        self.show()

    def foo(self, value):
        itemValue = self.btn.itemData(value).toString()
        itemText = self.btn.itemText(value)
        print itemValue, "====", itemText

def main():
    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

请查看文档了解更多详情http://pyqt.sourceforge.net/Docs/PyQt4/qcombobox.html#addItem