将行添加到表单布局
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
调用。以上是关于将行添加到表单布局的主要内容,如果未能解决你的问题,请参考以下文章