将小部件添加到 QGroupBox 中

dis*_*dia 6 pyqt widget qgroupbox

我正在尝试将 QPushButton 小部件添加到 QGroupBox 中,例如:

self.btn = QtGui.QPushButton('Push Button')
self.grp_box = QtGui.QGroupBox('Button Section')
self.grp_box.addWidget(self.btn)
Run Code Online (Sandbox Code Playgroud)

当尝试运行代码时,我收到此错误:AttributeError: 'NoneType' object has no attribute 'addWidget'

经过一些在线检查,似乎 QGroupBox 只允许setLayout,这意味着我需要使用QVBoxLayoutQHBoxLayout等。

有没有办法解决这个问题,在不使用任何布局的情况下添加小部件?我正在使用 PyQt。

Esk*_*868 3

首先创建主布局 = QHBoxLayout()

  main_layout = QHBoxLayout()
Run Code Online (Sandbox Code Playgroud)

然后创建组框:

  group_box = QGroupBox("Group Box")
Run Code Online (Sandbox Code Playgroud)

创建组框布局:

  group_box_layout = QVBoxLayout()
Run Code Online (Sandbox Code Playgroud)

将小部件添加到组框布局中,如下所示:

  group_box_layout.addWidget(QCheckBox("Check Box 1"))
  group_box_layout.addWidget(QCheckBox("Check Box 2"))
  group_box_layout.addWidget(QCheckBox("Check Box 3"))
Run Code Online (Sandbox Code Playgroud)

将组框布局分配给组框:

  group_box.setLayout(group_box_layout)
Run Code Online (Sandbox Code Playgroud)

将组框分配给主布局:

  main_layout.addWidget(group_box)
Run Code Online (Sandbox Code Playgroud)

并在最后添加以下内容:

    widget = QWidget()
    widget.setLayout(layout1)
    self.setCentralWidget(widget)
Run Code Online (Sandbox Code Playgroud)