PyQt QSplitter setSizes 用法
PyQt QSplitter setSizes usage
我正在使用 QSplitter 并想设置拆分器中窗格的初始相对大小,例如 1 到 10 的比例。但是,无论我将 window 设置为什么大小,该比率都不会小于 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()
不使用 setSizes(),而是使用 setStretchfactor(),如下所示:
splitter.setStretchFactor(1, 10)
setSizes() 方法是绝对的而不是相对的,它将大小设置为实际像素大小 - 因此为什么尝试将小部件的大小设置为 10 像素不起作用。
我正在使用 QSplitter 并想设置拆分器中窗格的初始相对大小,例如 1 到 10 的比例。但是,无论我将 window 设置为什么大小,该比率都不会小于 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()
不使用 setSizes(),而是使用 setStretchfactor(),如下所示:
splitter.setStretchFactor(1, 10)
setSizes() 方法是绝对的而不是相对的,它将大小设置为实际像素大小 - 因此为什么尝试将小部件的大小设置为 10 像素不起作用。