将行添加到表单布局

Posted

技术标签:

【中文标题】将行添加到表单布局【英文标题】:Add row to Form Layout 【发布时间】:2014-08-06 10:16:34 【问题描述】:

代码:

import sys
from PySide.QtCore import *
from PySide.QtGui import *

def main():
    app = QApplication(sys.argv)
    main = QMainWindow()
    main.setWindowTitle("First GUI")
    form_widget = QWidget()
    form_widget.layout = QFormLayout()
    form_widget.layout.addRow(QLabel("city 1"), QLabel("delhi"))
    form_widget.layout.addRow(QLabel("city 2"), QLabel("chennai"))
    main.setCentralWidget(form_widget)

    main.show()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

上面的代码打开了一个以“First GUI”为标题的空窗口。

但行未添加到该窗口。 为什么?如何纠正这个问题?

【问题讨论】:

您可能需要为布局设置大小吗? Style nitpick: addRow 不需要为第一个参数显式实例化 QLabel。您可以简单地以form_widget.layout.addRow("city 1", QLabel("delhi")) 调用它。 @folibis 布局的全部意义在于您不需要明确处理它们的大小。 【参考方案1】:

您需要使用setLayout() 将布局分配给小部件。

form_widget = QWidget()
layout = QFormLayout()
layout.addRow(QLabel("city 1"), QLabel("delhi"))
layout.addRow(QLabel("city 2"), QLabel("chennai"))
form_widget.setLayout(layout)

【讨论】:

或者,将form_widget 作为参数传递给QFormLayout。它节省了一行代码 - 不再需要 setLayout 调用。

以上是关于将行添加到表单布局的主要内容,如果未能解决你的问题,请参考以下文章

使用 append() 将行追加到表单,但是当它提交时它不包括来自追加行的数据[重复]

将表单添加到布局

Django - 将行添加到 MySQL 数据库

如何在laravel中使用jquery将行添加到数据表中

从父布局中删除和添加 xamarin 表单图像时出现问题

将 UIViewController 元素添加到 xib 图形布局中