grid - PySide/QT - 如何将水平或垂直布局添加到网格布局

标签 grid pyqt4 pyside python-3.3

如果我想创建一个网格布局没有覆盖整个框架的窗口?我可以通过向网格布局添加水平布局并在水平布局中添加拉伸(stretch)来做到这一点。当我在下面的代码中尝试它时,我收到了这个错误:

TypeError: PySide.QtGui.QGridLayout.addLayout(): not enough arguments


import sys
from PySide import QtGui


class Example(QtGui.QWidget):

    def __init__(self):
        super(Example, self).__init__()

        self.initUI()

    def initUI(self):

        names = ['Cls', 'Bck', '', 'Close', '7', '8', '9', '/',
                '4', '5', '6', '*', '1', '2', '3', '-',
                '0', '.', '=', '+']

        hbox = QtGui.QHBoxLayout()
        hbox.addStretch()

        vbox = QtGui.QVBoxLayout()
        vbox.addStretch()
        grid = QtGui.QGridLayout()
        grid.addLayout(vbox)

        self.setLayout(grid)

        self.move(300, 150)
        self.setWindowTitle('Calculator')
        self.show()

def main():

    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

将水平布局添加到垂直布局时不会发生此错误,反之亦然。

谢谢您的帮助!

最佳答案

您必须将布局添加到 QGridLayout根据方法签名 here 在特定的行和列.

但在这种情况下,我认为你最好将网格布局添加到 vbox 布局中,反之亦然

或者,您可以使用 QGridLayout.setColumnStretch() 为网格布局中的空列设置列拉伸(stretch)。 .

关于grid - PySide/QT - 如何将水平或垂直布局添加到网格布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18963054/

相关文章:

css - 使用 960.gs 灵活的网格布局覆盖整个客户区域

python - Ubuntu 中没有出现 PyQt4 菜单栏

python - QTableView 未在 dataChanged 上更新

python - PyQt4 PostgreSQL QSqlQuery BC信息丢失

iphone - 如何创建图像的 GridView ?单击图像时,它应该打开该图像

html - Bootstrap 列高度问题

python - pyqtgraph/查科/guiqwt : Fast scrolling timetrace demo

python - PySide 获取 QSpinBox 中箭头按钮的宽度

java swing 将 JPanel 与鼠标监听器的行 col 值相关联

python - 单击事件在 pyside 的 textedit 中不起作用