2016-07-04 153 views
1

我感到一个愚蠢但恼人的问题。我想为网格布局上的两个列表小部件设置不同的大小,一个在另一个之上。所以,我希望将60%的表单空间设置为上方的小部件,将40%的部分设置为下方的小部件。我试图使用setRowStretch,但没有成功。如何控制Qt/PyQt/PySide网格布局中窗口部件的大小

这里是我的代码:

import sys 
from PyQt4.QtCore import * 
from PyQt4.QtGui import * 

def window(): 
    app = QApplication(sys.argv) 
    win = QWidget() 

    list1 = QListView() 
    list2 = QListView() 

    grid = QGridLayout() 
    grid.setRowStretch(6, 4) 
    grid.addWidget(list1) 
    grid.setSpacing(2) 
    grid.addWidget(list2) 

    win.setLayout(grid) 
    win.setGeometry(300, 150, 350, 300) 
    win.setWindowTitle("Example") 
    win.show() 
    sys.exit(app.exec_()) 

if __name__ == '__main__': 
    window() 

感谢您可以提供任何帮助。

回答

2

rowStretch方法的第一个参数是行号,第二个参数是拉伸因子。所以你需要两个电话rowStretch,像这样:

import sys 
from PyQt4.QtCore import * 
from PyQt4.QtGui import * 

def window(): 
    app = QApplication(sys.argv) 
    win = QWidget() 

    list1 = QListView() 
    list2 = QListView() 

    grid = QGridLayout() 
    grid.setRowStretch(0, 6) 
    grid.setRowStretch(1, 4) 
    grid.addWidget(list1) 
    grid.setSpacing(2) 
    grid.addWidget(list2) 

    win.setLayout(grid) 
    win.setGeometry(300, 150, 350, 300) 
    win.setWindowTitle("Example") 
    win.show() 
    sys.exit(app.exec_()) 

if __name__ == '__main__': 
    window() 
+0

Thabks!文件没有提到,我也找不到任何相关的例子。 – maurobio

+0

很高兴能有所帮助。如果这解决了问题,请点击复选标记接受答案。 – titusjan

相关问题