ユーザーの入力に応じて、いくつかのqlineeditとボタンを作成するプログラムがあります。
上の画像では、グレーアウトされた [次へ] ボタンをクリックした後に、4 行のボタンが追加されています。ここで、対応するボタンがクリックされたときに、ユーザーからの入力を関数に取得したいと考えています ([ショット 1 を作成] をクリックします! --> 引数として渡された「exShot1」を使用して関数に移動します)。
問題は、ループで作成されたときに各qlineとボタンの名前を取得する方法がわかりません。ループ内で一意の変数を作成できると思いますが、それは正しくありません。使ってみsetObjectName
ましたが、それを使ってテキストを呼び出す方法がわかりません。私はまた、Lamdbaで失敗した試みをしました(これはどういうわけか正しい方法かもしれないと感じています)。これは、ユーザー入力が変更されたときに名前を取得し、追跡する必要があることの組み合わせだと思います.
私は実験しtextChanged
ましたが、ループの最後のエントリで動作するようになりましたが、他のqlinesとボタンでは動作しませんでした)
関連コード:
while i <= int(seqNum):
#create each widget
self.createShotBtn = QtGui.QPushButton("Create Shot %s!" %str(self.shotNumberLst[i-1]))
self.labelName = QtGui.QLabel(self)
self.labelName.setText("Enter Name Of Shot %s!" %str(self.shotNumberLst[i-1]))
self.shotName = QtGui.QLineEdit(self)
self.shotName.setObjectName("shot"+str(i))
#add widget to layout
self.grid.addWidget(self.labelName, 11+shotjump,0)
self.grid.addWidget(self.shotName,11+shotjump,1)
self.grid.addWidget(self.createShotBtn, 11+shotjump,2)
#Press button that makes magic happen
self.createShotBtn.clicked.connect(???)
i += 1
編集: ユーザーがすべての行に入力を入力し、それらすべての入力をリストまたは辞書として渡す 1 つのボタンを押しただけでも問題ありません (「ショット」ごとにさらに行が追加されます)。