2016-12-19 1 views
0

Python 3.5와 함께 PyQt4를 사용하여 간단한 애플리케이션을 만들고 벽에 부딪 히고 있습니다. 나는 사용자가 같은 창에서 희망으로이 QFormLayout 그를 제공하는 등, 여러 번 반복 할, 동일한 QWidget에서 QFormLayout을 여러 번 반복하기

나는 setCentralWidget로는 QWidget을 가지고 있고,에가

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