これが私の問題です。n個のQLineEditウィジェットを作成したい( nは入力値に応じて任意の数にすることができます)。これらのQLineEditウィジェットを作成してオブジェクト名とテキストを指定することはできますが、それらすべてにシグナルを定義することはできません (すべてのQLineEditウィジェットが対話時にシグナルを発するようにしたい)。コードの例を次に示します。
self.fieldList = {}
for (i, value) in attrMap.iteritems():
self.fieldList["valueField" + str(i)] = QtGui.QLineEdit()
self.fieldList["valueField" + str(i)].setObjectName(_fromUtf8("attributeValueField_{0}".format(i)))
self.fieldList["valueField" + str(i)].setText(_fromUtf8("{0}".format(value.toString())))
self.fieldList["valueField" + str(i)].cursorPositionChanged.connect(lambda: (self.checkState(self.fieldList["valueField" + str(i)])))
問題は最後の行に残ります。
self.fieldList["valueField" + str(i)].cursorPositionChanged.connect(lambda: (self.checkState(self.fieldList["valueField" + str(i)])))
シグナルはすべてのウィジェットに固執すると思いましたが、ループのため、シグナルは最後のウィジェットに到達するまでウィジェットからウィジェットに「ジャンプ」するため、最後のウィジェットのみがシグナルを発信できます。では、変更されたときにすべてのウィジェットがシグナルを発するようにするにはどうすればよいでしょうか?