【问题标题】:PyQt expand scrollarea fully when window is big enough当窗口足够大时,PyQt 完全扩展滚动区域
【发布时间】:2016-06-28 20:40:19
【问题描述】:

我正在为我经常使用的一些脚本制作一个小的 PyQt gui 软件。此 gui 的一部分在右侧有一个按钮列表,按钮的数量可能因 gui 的每次运行而异。出于这个原因,我希望将它们放在滚动区域中。这有点工作,但由于某种原因,当窗口大小允许时,滚动区域不会扩展最后一位(因此不会显示滚动条)。

它的行为就好像在别处设置了最大高度,即使我设置的最大高度远高于窗口大小?!?

如果我将 minimumheight 设置为大于 widgetsize,则滚动条会按预期隐藏,但如果 minimumsize 较小则不会,因此当窗口较小时将使用滚动条。 Cutout, left with minimumheight of 550, and right with minimumheight of 200

    self.Pvbox = QtGui.QVBoxLayout()
    self.syncButton=QtGui.QPushButton('Sync')
    self.syncButton.setMaximumWidth(100)
    self.Pvbox.addWidget(self.syncButton)

    PbuttonWdg = QtGui.QWidget()
    Pbuttonlayout = QtGui.QVBoxLayout()
    self.nbuttons=[]
    c=0
    for n in main.Pnames:
        self.nbuttons.append(QtGui.QPushButton(str(n)))
        self.nbuttons[-1].setMaximumWidth(80)
        Pbuttonlayout.addWidget(self.nbuttons[-1])
        c+=1
    PbuttonWdg.setLayout(Pbuttonlayout)
    scroll=QtGui.QScrollArea()
    scroll.setMaximumWidth(110)
    scroll.setMinimumWidth(110)
    scroll.setMinimumHeight(550)
    scroll.setMaximumHeight(800)
    scroll.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded)
    scroll.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
    scroll.setWidgetResizable(False)
    scroll.setWidget(PbuttonWdg)
    self.Pvbox.addWidget(scroll)

    self.Pvbox.addStretch(1)
    self.localButton=QtGui.QPushButton('Local')
    self.localButton.setMaximumWidth(100)
    self.Pvbox.addWidget(self.localButton)

【问题讨论】:

    标签: pyqt qscrollarea


    【解决方案1】:

    发现问题...

    滚动区域之后的“addStretch(1)”,使得拉伸部分在滚动区域完全展开之前由于某种原因开始拉伸。移除该拉伸器会使滚动区域执行所有扩展/拉伸(如果 sizepolicy 允许)。

    所以我认为这是一种解决方案,尽管对我来说最佳方案是滚动区域在任何拉伸接管之前完全扩展......

    【讨论】:

      猜你喜欢
      • 2017-05-27
      • 2021-11-26
      • 2018-01-12
      • 2016-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-01
      • 1970-01-01
      相关资源
      最近更新 更多