我想给小工具一个初始大小,不是固定的,也不是最小的,也不是最大的

因为我希望用户能够控制小部件的大小,当我使用拆分器.

怎么做到的?

请看这张图片:

enter image description here

当我打开程序时,我希望右侧(红色)宽度为150;但当我try 更改它的大小时,我希望它响应并可更改,即使我希望它更大或更小.

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

当我设置一个最小尺寸时,它将扩展并使左侧(绿色)变小.

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

这是我的代码:

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()

谢谢.

推荐答案

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

例如:

splitter.setSizes([splitter.width() - 150,150])

来自Qt文档

QSpliter.setSizes

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

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

列表中多余的值将被忽略.如果List包含的值太少,则结果是未定义的,但程序仍将表现良好.

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

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

另一种设置小部件初始大小的方法是将小部件子类化并定义一个sizeHint方法,该方法返回所需的QSize

Python相关问答推荐

使用Python从HTTP打印值

指示组内的rejected_time是否在creation_timestamp后5分钟内

使用Keras的线性回归参数估计

将整组数组拆分为最小值与最大值之和的子数组

如何避免Chained when/then分配中的Mypy不兼容类型警告?

将输入管道传输到正在运行的Python脚本中

在Polars(Python库)中将二进制转换为具有非UTF-8字符的字符串变量

在Wayland上使用setCellWidget时,try 编辑QTable Widget中的单元格时,PyQt 6崩溃

如何将Docker内部运行的mariadb与主机上Docker外部运行的Python脚本连接起来

用NumPy优化a[i] = a[i-1]*b[i] + c[i]的迭代计算

DataFrames与NaN的条件乘法

组/群集按字符串中的子字符串或子字符串中的字符串轮询数据框

为一个组的每个子组绘制,

如何在FastAPI中为我上传的json文件提供索引ID?

将scipy. sparse矩阵直接保存为常规txt文件

未调用自定义JSON编码器

Matplotlib中的字体权重

Python—为什么我的代码返回一个TypeError

如何在Great Table中处理inf和nans

如何在Python中使用Iscolc迭代器实现观察者模式?