gpt4 book ai didi

python - 是否可以设置小部件的宽度而不修复它?

转载 作者:行者123 更新时间:2023-12-01 07:32:07 25 4
gpt4 key购买 nike

我试图在 PyQt5 中设置 QScrollArea 的宽度,但我发现的唯一方法是通过设置宽度

scroll.setFixedWidth(360)  

功能。

问题是当我将滚动条区域放入 QSplitter

self.splitter2 = QSplitter(Qt.Horizontal) 
self.splitter2.addWidget(scroll)

我无法再用鼠标调整滚动条区域的宽度。

我想做的是设置滚动条区域的宽度(例如100),然后当我单击并拖动QSplitter的中线时能够修改它。目前它是一个(设置滚动条区域的宽度)或另一个(用鼠标修改宽度) - 但不能同时两者。

这是一个最小的示例:

from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
import sys


class Viewer(QMainWindow):
def __init__(self, parent=None):
super(Viewer, self).__init__()
self.parent = parent

self.centralWidget= QWidget()
self.setCentralWidget(self.centralWidget)
self.mainHBOX = QHBoxLayout()
self.setFixedWidth(200)
self.setFixedHeight(200)

label1 = QLabel('blablabalblablabalblablabalblablabalblablabalblablabalblablabalblablabalblablabal')
label2 = QLabel('blablabal again')

scroll = QScrollArea()
scroll.setFixedWidth(100)
scroll.setWidget(label1)
scroll.setWidgetResizable(True)

self.splitter2 = QSplitter(Qt.Horizontal)
self.splitter2.addWidget(scroll)
self.splitter2.addWidget(label2)

self.mainHBOX.addWidget(self.splitter2)
self.centralWidget.setLayout(self.mainHBOX)

def main():
app = QApplication(sys.argv)
ex = Viewer(app)
ex.setWindowTitle('window')
# ex.showMaximized()
ex.show()
sys.exit(app.exec_( ))


if __name__ == '__main__':
main()

最佳答案

您应该设置分割器 handle 的初始位置,而不是设置其子窗口小部件的宽度。这可以使用 QSplitter.setSizes 来完成:

leftwidth = 100
self.splitter2.setSizes([leftwidth, self.width() - leftwidth])

但请注意,拆分器不允许将其句柄移动到小于子窗口小部件的最小宽度的位置。滚动区域的默认最小宽度为 100。因此,在上面的示例中,设置 leftwidth = 50 将无法正常工作,除非您相应地显式重置滚动区域的最小宽度。

关于python - 是否可以设置小部件的宽度而不修复它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57165216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com