如果我想创建一个网格布局没有覆盖整个框架的窗口?我可以通过向网格布局添加水平布局并向水平布局添加拉伸来实现。当我在下面的代码中尝试它时,我收到此错误:
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()
向垂直布局添加水平布局时不会发生此错误,反之亦然。
感谢您的帮助!
答案 0 :(得分:2)
您必须根据方法签名here将布局添加到特定行和列的QGridLayout
。
但在这种情况下,我认为你最好将网格布局添加到vbox布局,而不是反之亦然
或者,您可以使用QGridLayout.setColumnStretch()为网格布局中的空列设置列拉伸。