【问题标题】:PyQt QSplitter setSizes usagePyQt QSplitter setSizes 用法
【发布时间】:2015-04-09 11:51:45
【问题描述】:

我正在使用 QSplitter 并希望设置拆分器中窗格的初始相对大小,例如以 1 到 10 的比例。但是,无论我将窗口设置为什么大小,该比率都不会小于 76 到 100。有什么想法吗?

import sys
from PyQt4 import QtGui, QtCore
from PyQt4.QtGui import QScrollArea

class Example(QtGui.QWidget):

    def __init__(self):
        super(Example, self).__init__()
        self.initUI()

    def initUI(self):      
        hbox = QtGui.QHBoxLayout(self)
        first = QtGui.QFrame(self)
        first.setFrameShape(QtGui.QFrame.StyledPanel)
        scrollAreaLeft = QScrollArea()  
        scrollAreaLeft.setWidgetResizable(True)
        scrollAreaLeft.setWidget(first)
        second = QtGui.QFrame(self)
        second.setFrameShape(QtGui.QFrame.StyledPanel)
        scrollAreaRight = QScrollArea()  
        scrollAreaRight.setWidgetResizable(True)
        scrollAreaRight.setWidget(second)
        splitter = QtGui.QSplitter(QtCore.Qt.Horizontal)
        splitter.addWidget(scrollAreaLeft)
        splitter.addWidget(scrollAreaRight)
        splitter.setSizes([10, 100])
        hbox.addWidget(splitter)
        self.setLayout(hbox)
        self.setGeometry(600, 600, 600, 600)
        self.setWindowTitle('QtGui.QSplitter')
        self.show()
        print ("scrollAreaLeft width: "+str(scrollAreaLeft.width()))
        print ("scrollAreaRight width: "+str(scrollAreaRight.width()))

def main():
    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()    

【问题讨论】:

    标签: python qt pyqt


    【解决方案1】:

    使用 setStretchfactor() 代替 setSizes(),如下所示:

    splitter.setStretchFactor(1, 10)
    

    setSizes() 方法是绝对的而不是相对的,它将大小设置为实际像素大小 - 因此为什么尝试将小部件的大小设置为 10 像素不起作用。

    【讨论】:

    • 但是你如何处理超过 2 个子部件?
    • 有时,'setStretchFactor' 不起作用,不知道为什么
    猜你喜欢
    • 1970-01-01
    • 2019-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-26
    • 1970-01-01
    相关资源
    最近更新 更多