python - 在组框中对小部件进行分组

标签 python pyqt pyqt4 qgridlayout qgroupbox

我有一个如下所示的组框:

enter image description here

这是创建它的代码:

def create_settings_group(self):
   group_box_settings = QtGui.QGroupBox(self)
   group_box_settings.setTitle("Settings")

   grid = QtGui.QGridLayout()

   grid.addWidget(self.label_1, 3, 0)
   grid.addWidget(self.label_2, 3, 2)
   grid.addWidget(self.label_3, 0, 0)
   grid.addWidget(self.label_4, 1, 0)
   grid.addWidget(self.label_6, 2, 0)
   grid.addWidget(self.label_7, 3, 4)
   grid.addWidget(self.label_8, 3, 6)
   grid.addWidget(self.label_9, 3, 8)

   grid.addWidget(self.line_edit_1, 0, 1, 1, 9)
   grid.addWidget(self.combo_box_1, 1, 1, 1, 8)
   grid.addWidget(self.push_button_1, 1, 9)
   grid.addWidget(self.combo_box_2, 2, 1, 1, 8)
   grid.addWidget(self.push_button_2, 2, 9)
   grid.addWidget(self.line_edit_2, 3, 1)
   grid.addWidget(self.line_edit_3, 3, 3)
   grid.addWidget(self.line_edit_4, 3, 5)
   grid.addWidget(self.line_edit_5, 3, 7)
   grid.addWidget(self.line_edit_6, 3, 9)

   grid.addWidget(self.check_box_1, 0, 10)
   grid.addWidget(self.check_box_2, 1, 10)
   grid.addWidget(self.check_box_3, 2, 10)

   group_box_settings.setLayout(grid)

   return group_box_settings

正如人们所看到的,加号按钮靠近组合框,但远离复选框。如何将组合框和按钮分组在一起,以便它们跨越它们下面的所有行编辑和标签?

基本上我想实现这样的目标:

enter image description here

最佳答案

解决方案是使用QHBoxLayout对于QComboBoxQPushButton并更改 QSizePolicyQPushButton这样就需要 sizeHint()为最大值。

   def create_settings_group(self):
      group_box_settings = QtGui.QGroupBox(self)
      group_box_settings.setTitle("Settings")

      grid = QtGui.QGridLayout()

      grid.addWidget(self.label_1, 3, 0)
      grid.addWidget(self.label_2, 3, 2)
      grid.addWidget(self.label_3, 0, 0)
      grid.addWidget(self.label_4, 1, 0)
      grid.addWidget(self.label_6, 2, 0)
      grid.addWidget(self.label_7, 3, 4)
      grid.addWidget(self.label_8, 3, 6)
      grid.addWidget(self.label_9, 3, 8)

      grid.addWidget(self.line_edit_1, 0, 1, 1, 9)

      self.push_button_1.setSizePolicy(QtGui.QSizePolicy.Maximum, QtGui.QSizePolicy.Fixed)
      hlay1 = QtGui.QHBoxLayout()
      hlay1.addWidget(self.combo_box_1)      
      hlay1.addWidget(self.push_button_1)
      grid.addLayout(hlay1, 1, 1, 1, 9)

      self.push_button_2.setSizePolicy(QtGui.QSizePolicy.Maximum, QtGui.QSizePolicy.Fixed)
      hlay2 = QtGui.QHBoxLayout()
      hlay2.addWidget(self.combo_box_2)
      hlay2.addWidget(self.push_button_2)
      grid.addLayout(hlay2, 2, 1, 1, 9)

      grid.addWidget(self.line_edit_2, 3, 1)
      grid.addWidget(self.line_edit_3, 3, 3)
      grid.addWidget(self.line_edit_4, 3, 5)
      grid.addWidget(self.line_edit_5, 3, 7)
      grid.addWidget(self.line_edit_6, 3, 9)

      grid.addWidget(self.check_box_1, 0, 10)
      grid.addWidget(self.check_box_2, 1, 10)
      grid.addWidget(self.check_box_3, 2, 10)

      group_box_settings.setLayout(grid)

      return group_box_settings

enter image description here

关于python - 在组框中对小部件进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52923184/

相关文章:

python - 使用 PyQt4 通过 Python 进行简单对话框(问题、确定、取消)

c++ - Python Web 客户端编程库

python - 忽略Python中的IndexError(类似于列表订阅上的空合并运算符)

python - 从变量中获取值

用于保存和恢复 UI 小部件值的 Python PyQt4 函数?

python - 在 Pyqt 中,如何通过空的小部件空间启用拖动/移动窗口?

python - 使用百分比单位绘制数据

Python 正则表达式 : match any repeated words that are separated by exactly one other word

python - PyQt - 添加文本

python - 如何使QMessageBox和QInputDialog在屏幕上居中?