QDockWidget

时间:2017-03-29 16:56:49

标签: python pyqt pyqt4

所以我一直试图在QDockwidget中制作多个复选框,但我似乎只能添加一个。这就是我所拥有的

def createDockWindows(self):
    cboxes = gui.QDockWidget("Cboxes", self)
    #cboxes.setWidget(gui.QCheckBox())
    cboxes.setAllowedAreas(core.Qt.LeftDockWidgetArea)

    self.c0 = gui.QCheckBox("B0")
    self.c0.setChecked(False)
    self.c0.stateChanged.connect(lambda:self.btnstate(self.c0))
    cboxes.setWidget(self.c0)

    self.c1 = gui.QCheckBox("B1")
    self.c1.setChecked(False)
    self.c1.stateChanged.connect(lambda:self.btnstate(self.c1))
    cboxes.setWidget(self.c1)

    self.addDockWidget(core.Qt.LeftDockWidgetArea, cboxes)

输出只给我B1的方框。

我已经完成了dock方法,因为我在右侧有一些matplotlib图,这是this示例的修改版本。如果有更好的方法可以做到这一点,我很乐意改变,我只是没有找到谷歌。

1 个答案:

答案 0 :(得分:1)

您必须创建一个新的小部件,放置一个布局并添加复选框,您应该将它添加到QDockWidget中。

def createDockWindows(self):
    cboxes = QtGui.QDockWidget("Cboxes", self)
    cboxes.setAllowedAreas(QtCore.Qt.LeftDockWidgetArea)

    w = QtGui.QWidget()
    layout = QtGui.QVBoxLayout()
    w.setLayout(layout)

    self.c0 = QtGui.QCheckBox("B0")
    layout.addWidget(self.c0)

    self.c1 = QtGui.QCheckBox("B1")
    layout.addWidget(self.c1)

    cboxes.setWidget(w)
    self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, cboxes)

enter image description here

加[添加QSpacer]:

def createDockWindows(self):
    cboxes = QtGui.QDockWidget("Cboxes", self)
    cboxes.setAllowedAreas(QtCore.Qt.LeftDockWidgetArea)

    w = QtGui.QWidget()
    layout = QtGui.QVBoxLayout()
    w.setLayout(layout)

    self.c0 = QtGui.QCheckBox("B0")
    layout.addWidget(self.c0)

    self.c1 = QtGui.QCheckBox("B1")
    layout.addWidget(self.c1)


    spacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
    layout.addItem(spacerItem)

    cboxes.setWidget(w)
    self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, cboxes)