如果我想创建一个网格布局没有覆盖整个框架的窗口?我可以通过向网格布局添加水平布局并在水平布局中添加拉伸(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/