我被一个愚蠢但令人讨厌的问题震惊了。我想为网格布局上的两个列表小部件设置不同的大小,一个在另一个之上。因此,我想将 60% 的表单空间设置为上部小部件,将 40% 设置为下部小部件。我尝试使用 setRowStretch,但没有成功。
这是我的代码:
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()
Run Code Online (Sandbox Code Playgroud)
感谢您提供的任何帮助。
该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()
Run Code Online (Sandbox Code Playgroud)