【问题标题】:How to make widgets stack on top of each other using QScrollArea with Vertical layout in PyQt5?如何在 PyQt5 中使用带有垂直布局的 QScrollArea 使小部件堆叠在一起?
【发布时间】:2021-05-27 18:32:40
【问题描述】:

我是 PyQt5 的超级新手,我正在尝试设计一个通知面板,其中最近的通知应该放在顶部而不是底部。对于通知,我使用的是 QLabel 小部件,对于通知面板,我使用的是 QScrollArea,其垂直布局和垂直策略设置为 Fixed,否则它将标签放在中心而不是顶部。

所以,问题是,当我想将新标签放在顶部时,它会将我的新标签放在底部。 我试图弄乱几何函数,通过创建一个列表来附加每个新的通知标签,然后从最高索引到最低索引遍历列表,相应地更改每个标签的 y 轴值。 这是代码:

        if len(self.alert_labels_list) > 0:
            loop_ran = 0
            for l_index in range(len(self.alert_labels_list), 0, -1):
                temp_label = self.alert_labels_list[l_index-1]
                new_ay = self.label_height + 31    # 31 is the y pos for first label while label height is self defined variable that contains the set height which in this case is 80. 
                self.label_height = new_ay
                temp_label.setGeometry(11, new_ay, 430, 80)


        self.x_label.setGeometry(11, 31, 430, 80) # x_label is the new label being added.

        self.label_height = 80

        [...]
        # code which sets the label
        [...]

        self.alert_labels_list.append(self.x_label)

这里的想法是,从最高索引开始,我们将遇到最新的标签(警报),并通过将(固定,定义的)标签高度添加到 prev 标签的 y 位置,我们将使所有标签出现在最近的订单。我希望这是有道理的。 无论如何,上面的这个逻辑仍然不起作用,可能是因为布局不允许我自定义添加到其中的新小部件的位置或其他什么?

如果您能指导我如何解决此问题,我将不胜感激!谢谢!

【问题讨论】:

  • 为什么不对滚动区域视口使用QVBoxLayout?它使添加和删除标签变得更加容易。
  • 我认为这就是我已经在做的;将 QVBoxLayout 应用到我的 QScrollArea。就像你说的那样,它确实让事情变得更容易,但我需要它来让我将最新的堆叠在顶部而不是底部。
  • @abaid 您的代码没有显示任何布局的使用(顺便说一句,这会自动使尝试设置几何图形无效,因为这是布局本身的特权)。在任何情况下,如果您使用框布局并希望在“开始”处插入小部件,请使用layout.insertWidget(0, widget)。
  • @musicamante 你是救生员,先生。老实说,我很抱歉自己是个白痴,没有让我的问题更清楚,我认为不包括我应用 VBoxLayout 和其他设置内容的代码,如果我只是在理论上解释就可以了,因为这对我来说似乎很好当问题实际上出在该代码部分时。非常感谢你,再次深表歉意,我会确保不再重复这种白痴行为。

标签: python pyqt5


【解决方案1】:

非常感谢@musicamante,他的评论包含了答案。 我将在这里引用他的话,“...如果您使用盒子布局并想在“开始”处插入小部件,请使用 layout.insertWidget(0, widget)”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-15
    • 1970-01-01
    • 1970-01-01
    • 2021-01-02
    • 2021-05-18
    • 2022-01-18
    • 2017-06-30
    • 2019-08-27
    相关资源
    最近更新 更多