2017-10-11 63 views
0

我正在使用PyQt5,我想为QComboBox中的每个项目分配一个值,如HTML组合框。Pyqt Combobox像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> 

是否有可能做这样的事情?

回答

1

为此,您可以使用用户数据,这里是一个工作示例

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