私のコードは、self.numberLineとマークされたQlineEditボックスから入力されたユーザによって与えられた一定量のボタンを動的に作成します。各ボタンはファイルダイアログを開き、ファイルを検索するファイルを指定し、それに対応するQlineEditにテキストを挿入します。私が抱えている問題は、どのボタンが押されているのかわからないため、QLineEditの対応する列を埋めることができないということです。ダイナミックボタン - ファイルを開き、テキストを読み込んで対応する列に挿入します
私はそれが多少働いていますが、私は2番目のボタンをクリックしたとき、それはだけではなく、2列目の、第一の列に追加されます
クリアボタンは何もしません
例: ユーザー入力3」の場合'numberLineウィジェットで「OK」をクリックすると、ウィジェットの3列が作成されます。トップウィジェットは、ユーザー用のファイルダイアログを開くボタンになります。その下にある他のウィジェットはQlineEditのエントリです
ユーザが番号を変更すると、適切な量のカラムが作成されますが、検索するファイルを選択すると何も挿入されません。
私は何が欠けているか?
画像
spacer1 = QtWidgets.QSpacerItem(0, 0, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
spacer2 = QtWidgets.QSpacerItem(0, 0, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.hbutton.addItem(spacer1)
self.hbutton.addItem(spacer2)
self.hboxlayout = QtWidgets.QHBoxLayout()
self.hboxlayout0 = QtWidgets.QHBoxLayout()
self.hboxlayout1 = QtWidgets.QHBoxLayout()
self.hboxlayout2 = QtWidgets.QHBoxLayout()
self.hboxlayout3 = QtWidgets.QHBoxLayout()
self.hboxlayout4 = QtWidgets.QHBoxLayout()
self.hboxlayout5 = QtWidgets.QHBoxLayout()
self.gridLayout_12.addLayout(self.hbutton, 1, 1, 1, 1)
self.gridLayout_12.addLayout(self.hboxlayout, 0, 1, 1, 1)
self.gridLayout_12.addLayout(self.hboxlayout0, 1, 1, 1, 1)
self.gridLayout_12.addLayout(self.hboxlayout1, 2, 1, 1, 1)
self.gridLayout_12.addLayout(self.hboxlayout2, 3, 1, 1, 1)
self.gridLayout_12.addLayout(self.hboxlayout3, 4, 1, 1, 1)
self.gridLayout_12.addLayout(self.hboxlayout4, 6, 1, 1, 1)
self.gridLayout_12.addLayout(self.hboxlayout5, 7, 1, 1, 1)
self.pushButton_9.clicked.connect(self.addLineEdit)
self.numberLine = QtWidgets.QLineEdit()
self.numberLine.setMaximumSize(QtCore.QSize(60, 16777215))
self.numberLine.setObjectName("self.numberLine")
self.horizontalLayout_7.addWidget(self.numberLine)
self.Array = []
self.PDiffEntryList = []
def clearLayout(self):
# del self.Array[:]
while self.hboxlayout0.count():
child = self.hboxlayout.takeAt(0)
child1 = self.hboxlayout0.takeAt(0)
child2 = self.hboxlayout1.takeAt(0)
child3 = self.hboxlayout2.takeAt(0)
child4 = self.hboxlayout3.takeAt(0)
child5 = self.hboxlayout4.takeAt(0)
child6 = self.hboxlayout5.takeAt(0)
if child.widget():
child.widget().deleteLater()
if child1.widget():
child1.widget().deleteLater()
if child2.widget():
child2.widget().deleteLater()
if child3.widget():
child3.widget().deleteLater()
if child4.widget():
child4.widget().deleteLater()
if child5.widget():
child5.widget().deleteLater()
if child6.widget():
child6.widget().deleteLater()
def addLineEdit(self):
try:
self.clearLayout()
self.FileButton = {}
for i in range(int(self.numberLine.text())):
self.FileButton[i] = QtWidgets.QPushButton(self.centralwidget)
self.FileButton[i].setText('File')
self.FileButton[i].setMaximumSize(QtCore.QSize(50, 16777215))
self.hboxlayout.addWidget(self.FileButton[i])
self.FileButton[i].clicked.connect(lambda i=i: self.openfile(i))
self.le = QtWidgets.QLineEdit()
self.le.setMaximumSize(QtCore.QSize(50, 16777215))
self.hboxlayout0.addWidget(self.le)
self.le1 = QtWidgets.QLineEdit()
self.le1.setMaximumSize(QtCore.QSize(50, 16777215))
self.hboxlayout1.addWidget(self.le1)
self.le2 = QtWidgets.QLineEdit()
self.le2.setMaximumSize(QtCore.QSize(50, 16777215))
self.hboxlayout2.addWidget(self.le2)
self.le3 = QtWidgets.QLineEdit()
self.le3.setMaximumSize(QtCore.QSize(50, 16777215))
self.hboxlayout3.addWidget(self.le3)
self.le4 = QtWidgets.QLineEdit()
self.le4.setMaximumSize(QtCore.QSize(50, 16777215))
self.hboxlayout4.addWidget(self.le4)
self.le5 = QtWidgets.QLineEdit()
self.le5.setMaximumSize(QtCore.QSize(50, 16777215))
self.hboxlayout5.addWidget(self.le5)
self.PDiffEntryList.append(self.le)
except:
print('')
def searchfile(self,dir):
try:
with open(dir) as f:
content = f.readlines()
# # Main Info - Ps, Pd, Ts
MainList = content[44].split()
RPM = str(round(float(MainList[0]), 2))
Ps = str(round(float(MainList[1]), 2))
Ts = str(round(float(MainList[2]), 2))
Pd = str(round(float(MainList[3]), 2))
Ratio = str(round(Pd/Ps, 2))
DiffP = str(round(Pd - Ps, 2))
self.input(i)
except:
print('Only out files')
def input(self,i):
if i == 0:
print('0')
elif i == 1:
print('1')
def openfile(self,i):
filename = QtWidgets.QFileDialog.getOpenFileName(self, 'Choose file')
dir = filename[0]
directory = os.path.split(dir)[0]
self.searchfile(dir,i)
グローバルはちょうど私が追加したものの、忘れてしまった、同じオブジェクトが配列で作成されているのと同じように、QLineEditsを参照していますか?ユーザーが3を数字にして2番目のボタンにアクセスしたい場合は、if self.file_buttons [2] .clicked:2番目のボタンを取得するには? –
私はあなたが提供したコードと同じことをしています。 if self.FileButton [1]: print( '1') elif self.FileButton [2]: print( '2') 最初のボタンをクリックすると、 2番目のボタンは '1'を出力します –
新しいコードで質問を更新したり、新しい質問を発行できますか?何が起こっているのか正確に知ることは難しい – aoh