在同一个QWidget中多次重复QFormLayout

时间:2016-12-19 17:31:45

标签: python pyqt4

我正在使用PyQt4和Python 3.5制作一个简单的应用程序而且我遇到了问题。

我有一个Qwidget作为setCentralWidget,并且正在制作一个QFormLayout

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

现在,我希望这个QFormLayout能够在用户希望的同一窗口中重复多次,以便让他/她有机会插入多个输入。但我不知道这样做。

我用for循环或不同的布局尝试过它,但它或者似乎不起作用,或者QlineEdit只对最后创建的实例是难以处理的,而字符串是“正确”显示的。

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分: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