PyQT4 を使用して Python3 で簡単なアプリケーションを作成しようとしています。メイン ウィンドウには、いくつかのカスタム ウィジェットが表示されます。各ウィジェットには QLineEdit ウィジェットが含まれています。ここにいくつかのコードがあります:
def fill_listwidget (self, widget):
i=0
for data in dataList:
item = QListWidgetItem(myListWidget)
#create my custom widget
item_widget = Ui_Form("Widget")
item_widget.lineEdit1.setText(data)
item_widget.index =i
i=i+1
widget.addItem(item)
widget.setItemWidget(item,item_widget)
#########
def temp (self):
lineEdit_text_changed(self, item_widget)
print(repr(item_widget))
print(repr(self))
item_widget.lineEdit1.textEdited.connect(temp)
#########
#item_widget.lineEdit1.textEdited.connect(lambda: (lineEdit_text_changed(self, item_widget)))
def lineEdit_text_changed(self, widget, data="Null"):
print(widget.lineEdit1.displayText())
ご覧のとおり、これらのシグナルを同じ方法で処理したいので、すべてのウィジェットに 1 つのシグナル ハンドラーを追加します。問題は、最後に追加されたウィジェットのみが適切に処理されることです。他のウィジェットの「lineEdit1」フィールドを変更しても、最後のウィジェットのフィールドが印刷されます。
1 最初のウィジェットの lineEdit を変更します
2 最後のウィジェットの lineEdit を出力します
3 2 番目のウィジェットの lineEdit を変更します
4 最後のウィジェットの lineEdit を出力し
ます ...
どのウィジェットの lineEdit が変更されていても、lastWidget がシグナル ハンドラに送信されていると思いますが、その理由はわかりません。
この問題の解決方法を教えてください。