我有一個循環。我創建了一個QCheckBox并將其放在QTableWidget單元格中,一切正常。在循環的每個步驟中,我都connect為myslot SLOT 調用了一個函數,但僅應用了最后一個QCheckBox實例。我在Google上搜索了很多,發現很多人遇到我的問題。我已經應用了他們的解決方案,但是我的問題仍然存在。for row in xrange(len(uniqueFields)): instance = QtGui.QCheckBox(uniqueFields[row], findInstance.tableWidget) print QtCore.QObject.connect(instance, QtCore.SIGNAL(_fromUtf8("stateChanged (int)")), lambda: findInstance.projectsInstance.myslot( "TWCH", findInstance, instance.text(), instance.checkState(), instance)) findInstance.tableWidget.setRowCount(findInstance.tableWidget.rowCount() + 1) findInstance.tableWidget.setCellWidget(row, 0, instance)注意:我的connect函數return True。如何connect在枚舉所有instances?的循環中創建函數?
3 回答

搖曳的薔薇
TA貢獻1793條經驗 獲得超6個贊
我有同樣的問題,您應該使用functools.partial例如:
for key, val in a_DICT_THAT_YOU_STORED_YOUR_OBJECTS_AND_STRINGS:
obj = partial( findInstance.projectsInstance.myslot,arg1="TWCH",arg2=self,arg3=key,arg4=val.checkState() )
QtCore.QObject.connect(val, QtCore.SIGNAL(_fromUtf8("stateChanged (int)")), obj)
當然,argX應該設置為函數名稱參數的真實名稱。
添加回答
舉報
0/150
提交
取消