有没有可能设置一个小部件的宽度而不进行修改?

2024-09-30 05:32:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在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()

Tags: fromimportself区域宽度sysviewerpyqt5
1条回答
网友
1楼 · 发布于 2024-09-30 05:32:42

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

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

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

相关问题 更多 >

    热门问题