4

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

TypeError: PySide.QtGui.QGridLayout.addLayout(): 没有足够的参数

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()

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

谢谢您的帮助!

4

1 回答 1

3

您必须根据此处的方法签名将布局添加到QGridLayout特定行和列。

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

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

于 2013-09-24T03:40:46.993 回答