我怎样才能在pyqt5中给小部件初始大小?

问题描述 投票:0回答:1

我想给一个小部件一个初始大小>>>>>>不固定,不是最小,也不是最大尺寸

因为我希望用户能够在使用拆分器时控制小部件的大小。

如何?

看这张图片:

当我打开程序时,我希望右侧(红色)宽度为 150 >,但是当我尝试更改它的大小时,我希望它能够响应并且可以更改,即使我希望它更大或更小。

当我设置固定大小时,我将无法更改其大小。

当我设置最小尺寸时,它会扩展并使左侧(绿色)变小。

当我设置最大尺寸时,我将能够使其更小,但不能更大。

这是我的代码:

from PyQt5 import QtWidgets
import sys


app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QWidget()
window.resize(800,500)
window_layout = QtWidgets.QGridLayout()



first_widget = QtWidgets.QScrollArea()
first_widget.setStyleSheet("background-color:rgb(0,150,0)")



second_widget = QtWidgets.QGroupBox()
second_widget.setStyleSheet("background-color:rgb(150,0,0)")



splitter = QtWidgets.QSplitter()
splitter.addWidget(first_widget)
splitter.addWidget(second_widget)


window_layout.addWidget(splitter)
window.setLayout(window_layout)
window.show()
app.exec()

谢谢。

python python-3.x pyqt pyqt5
1个回答
0
投票

由于您使用的是 QSplitter,因此您可以简单地使用 setSizes 方法来调整分割器控制的每个窗口的大小。

例如:

splitter.setSizes([650,150])

来自 Qt 文档

QSplitter.setSizes

将子窗口小部件各自的大小设置为列表中给出的值。

如果拆分器是水平的,则这些值从左到右设置每个小部件的宽度(以像素为单位)。如果分割器是垂直的,则从上到下设置每个小部件的高度。

列表中的额外值将被忽略。如果列表包含的值太少,结果是不确定的,但程序仍然会表现良好。

拆分器小部件的整体大小不受影响。相反,任何额外/缺失的空间都会根据尺寸的相对权重分布在小部件之间。

如果指定大小为 0,则小部件将不可见。保留小部件的大小策略。也就是说,小于相应小部件的最小尺寸提示的值将被提示的值替换。

© www.soinside.com 2019 - 2024. All rights reserved.