You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PyQt5中实现按钮的整齐垂直堆叠排列?

解决PyQt5 Tab2中按钮垂直堆叠的问题

核心思路是把两个按钮放进独立的垂直布局里,再将这个布局嵌入原网格中,这样按钮的间距就不会被网格内其他部件的行高干扰,实现整齐垂直堆叠的效果。

修改步骤

  1. 为按钮创建专属垂直布局,自定义间距并设置对齐方式:
# 新增:创建按钮垂直布局
button_layout = QVBoxLayout()
button_layout.setSpacing(10)  # 可按需调整按钮间的垂直间距
button_layout.addWidget(self.generate_lru_notes)
button_layout.addWidget(self.clear_lru_notes)
button_layout.setAlignment(Qt.AlignTop | Qt.AlignLeft)  # 保持按钮左上对齐
  1. 替换原代码中直接添加按钮的逻辑,把垂直布局作为整体嵌入网格:
# Grid 1 for Tab 2 部分,删除原两行添加按钮的代码,替换为:
self.t2_grid1.addLayout(button_layout, 1, 3, 2, 1)

完整修改后的关键代码片段

# Create Buttons for Tab 2
        self.generate_lru_notes = QPushButton("Generate LRU Report")
        self.generate_lru_notes.setToolTip("Click me to Generate the LRU Report")
        self.generate_lru_notes.setFixedWidth(200)

        self.clear_lru_notes = QPushButton("Clear LRU Report Data")
        self.clear_lru_notes.setToolTip("Click me to Clear the LRU Report")
        self.clear_lru_notes.setFixedWidth(200)

        # --- 新增按钮垂直布局 ---
        button_layout = QVBoxLayout()
        button_layout.setSpacing(10)  # 调整按钮间的垂直间距
        button_layout.addWidget(self.generate_lru_notes)
        button_layout.addWidget(self.clear_lru_notes)
        button_layout.setAlignment(Qt.AlignTop | Qt.AlignLeft)
        # --- 新增结束 ---

        # 以下标签和文本框创建代码保持不变
        self.lbl_investigation_notes = QLabel("LRU Investigation Notes: ")
        self.txt_investigation_notes = QTextEdit()
        self.txt_investigation_notes.setFixedWidth(350)
        self.txt_investigation_notes.setFixedHeight(150)

        # ... 其余标签、文本框创建代码省略 ...

        # Grid 1 for Tab 2
        self.t2_grid1.addWidget(self.lbl_investigation_notes, 0, 0, 1, 1, Qt.AlignTop | Qt.AlignBottom)
        self.t2_grid1.addWidget(self.txt_investigation_notes, 1, 0, 1, 1, Qt.AlignTop | Qt.AlignBottom)
        self.t2_grid1.addWidget(self.lbl_rework_notes, 0, 2, 1, 1, Qt.AlignTop | Qt.AlignBottom)
        self.t2_grid1.addWidget(self.txt_rework_notes, 1, 2, 1, 1, Qt.AlignTop | Qt.AlignBottom)
        # --- 替换原按钮添加代码 ---
        self.t2_grid1.addLayout(button_layout, 1, 3, 2, 1)
        # --- 替换结束 ---

        # 以下其余网格和布局代码保持不变

修改后,两个按钮会在独立布局内整齐堆叠,间距可自由控制,同时位置仍保持在原网格的指定列中,完全符合需求。

内容的提问来源于stack exchange,提问作者Barnesz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 12:02:21