2013-12-21 41 views
1

所以我想出如何動態生成控件我了QDialog的問題,我問here怎麼想的int值,但現在我無法從字典 設定值上QSpinBox下面QSpinBox沒有得到來自數據

books = { 
     'Contact':['Carl Sagan', 2], 
     'End of Faith':['Sam Harris', 7], 
     'on Mars':['Patrick Moore', 1], 

     } 


def buildUi(self): 
    self.gridLayout = QtGui.QGridLayout() 
    self.gridLayout.setSpacing(10) 
    for index, (key, values) in enumerate(self._data.iteritems()): 
     getLbl = QtGui.QLabel("Get", self) 
     label = QtGui.QLabel(key, self) 
     chkBox = QtGui.QCheckBox(self._data[key][0], self) 
     chkBox.setToolTip("Click here to get the book") 
     version = QtGui.QSpinBox(self._data[key][-1], self) 
     self.gridLayout.addWidget(getLbl, index, 0) 
     self.gridLayout.addWidget(label, index, 1) 
     self.gridLayout.addWidget(chkBox, index, 2) 
     self.gridLayout.addWidget(version, index, 3) 
    self.layout = QtGui.QVBoxLayout() 
    self.okBtn = QtGui.QPushButton("OK") 
    self.layout.addLayout(self.gridLayout) 
    self.horLayout = QtGui.QHBoxLayout() 
    self.horLayout.addStretch(1) 
    self.horLayout.addWidget(self.okBtn) 
    self.layout.addLayout(self.horLayout) 
    self.setLayout(self.layout) 

以下是錯誤消息我得到:

Traceback (most recent call last): 
    File "~/Development/custom/MessageBox.py", line 58, in _launchMessageBox 
    dlg = MessageBox(self._data) 
    File "~/Development/custom/MessageBox.py", line 10, in __init__ 
    self.buildUi() 
    File "~/Development/custom/MessageBox.py", line 21, in buildUi 
    version = QtGui.QSpinBox(self._data[key][-1], self) 
TypeError: QSpinBox(QWidget parent=None): argument 1 has unexpected type 'int' 
[Finished in 4.5s] 

還有我怎麼設置QSPinBox的限制?

回答

0

根據QSpinBox.__init__ documentation,它只需要parent參數。

替換以下行:

version = QtGui.QSpinBox(self._data[key][-1], self) 

有:

version = QtGui.QSpinBox(self) 

如果你想設置的初始值,使用setValue

version.setValue(self._data[key][-1]) 
+0

,我如何在QSpinBox中設置限制? –

+0

@san,你可以使用'setRange'方法或'setMinumum' /'setMaximum'方法。 – falsetru

+0

完成,謝謝! –