2016-12-19 9 views
0

私はPython 3.5でPyQ 3.5を使って簡単なアプリケーションを作っています。彼を与えるよう同じQWidgetでQFormLayoutを何度も繰り返す

私はsetCentralWidgetとしてのQWidgetを持って、そして中にはQFormLayout

flo = QtGui.QFormLayout() 
    flo.addRow("input 1", QtGui.QLineEdit) 
    flo.addRow("input 2", QtGui.QLineEdit) 

を作るですが、私は/、このQFormLayoutは、同じウィンドウ内でユーザが望むように何度でも繰り返すことにしたいです彼女は複数の入力を挿入する機会を得ました。しかし、私はこれを行うことを理解できません。

for-loopsや異なるレイアウトで試してみましたが、単に動作していないか、QlineEditが最後に作成されたインスタンスに対して難しいです。 。

これを行う正しい方法は何ですか?

答えて

0

変更{your QFormLayout}.addRow({string}, QtGui.QLineEdit)

{your QFormLayout}.addRow({string}, QtGui.QLineEdit())へ:

# -*- coding: utf-8 -*- 

from PyQt4 import QtCore, QtGui 


class Widget(QtGui.QWidget): 
    def __init__(self, parent=None): 
     super(Widget, self).__init__(parent) 
     self.verticalLayout = QtGui.QVBoxLayout(self) 
     self.label = QtGui.QLabel(self) 
     self.label.setText("<center>Ejemplo</center>") 
     self.verticalLayout.addWidget(self.label) 
     self.formLayout = QtGui.QFormLayout() 
     self.verticalLayout.addLayout(self.formLayout) 
     self.lineEdits = [] 
     for i in range(10): 
      lineEdit = QtGui.QLineEdit() 
      self.formLayout.addRow(str(i), lineEdit) 
      self.lineEdits.append(lineEdit) 

     self.lineEdits[2].setText("a") 

if __name__ == '__main__': 
    import sys 
    app = QtGui.QApplication(sys.argv) 
    w = Widget() 
    w.show() 
    sys.exit(app.exec_()) 

出力:

enter image description here

+0

これは動作しますが、それは別の問題を提起しました。 QLineEdit()のデータにどのようにアクセスできますか?通常、私はこれを次のようにします:variable = QtGui.QLineEdit()、そして、私はvariable.textによってデータにアクセスすることができますが、今はデータへのアクセス方法がわかりません。 –

+0

指定するには、最初に変数を初期化せずにデータにアクセスする可能性はありますか? –

+0

@MitchellvanZuylen私の解決策を更新してください:self.lineEdits [{position}]。{function} – eyllanesc

関連する問題