2017-03-29 2 views
0

QDockwidget 내에 여러 개의 체크 박스를 만들려고했지만 한 개만 추가 할 수있는 것 같습니다. 이것이 내가 가지고있는 것입니다.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 용 상자 만 제공합니다.

오른쪽에 몇 가지 matplotlib 그래프가 있기 때문에 도킹 방법을 수행했습니다. 변경된 버전은 this입니다. 이 작업을 수행하는 더 좋은 방법이 있다면 기꺼이 바꿀 것입니다. Google을 많이 사용하지는 않습니다.

+0

을 당신이 [문서]를 선택 했나 (http://doc.qt.io/qt-5.8/qdockwidget.html# setWidget)를 사용하여'setWidget()'이 어떻게 작동하는지 살펴 보겠다. – rbaleksandar

+0

B1 표시가 나타나고 B0이 누락되었습니다. 나는 https://www.tutorialspoint.com/pyqt/pyqt_qcheckbox_widget.htm에서 여러 상자를 보여주는이 예제를 사용했다. 문제는 QDockWidget에 addWidget이 없다는 것입니다. 그래서 나는 무엇을 사용해야하는지 궁금합니다. –

답변

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) 
+0

고마워, 나는 나의 시도 중 하나에서'w '를 여기에 추가하지 않았다. 나는 정말 멀리 펼쳐진 체크 박스를 가지고 있습니다, 당신의 것과 같이 보이게하는 방법이 있습니까? 이것은 내 모습입니다. https://i.imgur.com/vvAkMws.png –

+1

내 솔루션 업데이트 – eyllanesc

관련 문제