【求助】QSplitter分割器分割比例设定的问题
最近在研究PyQt5,今天研究的是QSplitter,按照网上的例子做完修改了一下,增加了分割比例设定但是很奇怪的是对splitter1 是有效的,但是对splitter2就没有效果了。 请大牛出手指点一二。
程序代码:
import sys from PyQt5.QtWidgets import (QWidget, QHBoxLayout, QFrame, QSplitter, QStyleFactory, QApplication) from PyQt5.QtCore import Qt class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): hbox = QHBoxLayout(self) topleft = QFrame(self) topleft.setFrameShape(QFrame.StyledPanel) topmid = QFrame(self) topmid.setFrameShape(QFrame.StyledPanel) topright = QFrame(self) topright.setFrameShape(QFrame.StyledPanel) bottom = QFrame(self) bottom.setFrameShape(QFrame.StyledPanel) # 通过QSplitter,用户可以拖动子控件边界来调整子控件的尺寸 splitter1 = QSplitter(Qt.Horizontal) # 水平方向宽度的调整 splitter1.addWidget(topleft) # 通过QSplitter需要至少两个控件 splitter1.addWidget(topmid) splitter1.addWidget(topright) splitter1.setStretchFactor(0, 4) #第一个参数是子控件的索引号,从0开始,第二个参数为比例。 下同 splitter1.setStretchFactor(1, 3) splitter1.setStretchFactor(2, 2) #splitter2 = QSplitter(Qt.Horizontal) #水平的可以一次添加多个控件,无需再次嵌套 #splitter2.addWidget(splitter1) #splitter2.addWidget(topright) splitter2 = QSplitter(Qt.Vertical) # 垂直方向宽度的调整 splitter2.addWidget(splitter1) # QSplitter嵌套,后面的splitter的变化会影响前面splitter上所有控件的高度 splitter2.addWidget(bottom) splitter2.setStretchFactor(0,1) splitter2.setStretchFactor(1,1) hbox.addWidget(splitter2) # 由于已经进行了嵌套,所以只需要最后的splitter self.setLayout(hbox) self.setGeometry(300, 300, 300, 200) self.setWindowTitle('QSplitter') self.show() def onChanged(self, text): self.lbl.setText(text) self.lbl.adjustSize() if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_())