2014-04-19 4 views
2

PySide로 간단한 응용 프로그램을 만들려고하는데 문서를 제대로 읽지 못했을 것 같습니다. 그건 내 코드입니다 :PySide (Qt) - 레이아웃이 작동하지 않습니다.

from PySide.QtGui import * 
from PySide.QtCore import Qt 

class Window(QMainWindow): 
    def __init__(self, parent = None): 
     QMainWindow.__init__(self, parent) 

     self.scene = QGraphicsScene() 
     self.view1 = QGraphicsView(self.scene, self) 
     self.view2 = QGraphicsView(self.scene, self) 

     self.gridLayout = QGridLayout() 
     self.gridLayout.addWidget(self.view1, 0, 0, Qt.AlignLeft) 
     self.gridLayout.addWidget(self.view2, 0, 1, Qt.AlignRight) 
     self.gridLayout.setColumnMinimumWidth(0, 300) 
     self.gridLayout.setColumnMinimumWidth(1, 300) 
     self.setLayout(self.gridLayout) 

     self.view1.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) 
     self.view2.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) 

     self.scene.addLine(0, 0, 1000, 1000) 

if __name__ == "__main__": 
    app = QApplication(()) 
    window = Window() 
    window.showMaximized() 
    app.exec_() 

코드가 실행하지만, 반으로 창을 분할해야 두 QGraphicsViews으로 창을 표시해야하지만, 난 단지 최소 크기 하나 개를 QGraphicsView를 얻을. 누군가 이걸로 나를 도울 수 있습니까?

미리 감사드립니다.

답변

3

QMainWindow에 대한 중앙 위젯을 작성한 다음 그에 대한 레이아웃을 설정해야합니다. 예 단순화 :

from PySide.QtGui import * 

class Window(QMainWindow): 
    def __init__(self, parent = None): 
     QMainWindow.__init__(self, parent) 

     self.scene = QGraphicsScene() 
     self.view1 = QGraphicsView(self.scene, self) 
     self.view2 = QGraphicsView(self.scene, self) 

     self.view1.setFrameShape(QFrame.NoFrame) 
     self.view2.setFrameShape(QFrame.NoFrame) 

     widget = QWidget(self) 
     layout = QGridLayout(widget) 
     layout.addWidget(self.view1, 0, 0) 
     layout.addWidget(self.view2, 0, 1) 

     layout.setContentsMargins(0, 0, 0, 0) 
     layout.setSpacing(0) 

     self.setCentralWidget(widget) 

     self.scene.addLine(0, 0, 1000, 1000) 

if __name__ == "__main__": 
    app = QApplication(()) 
    window = Window() 
    window.showMaximized() 
    app.exec_() 
+0

감사합니다. 완벽하게 작동합니다. 보기의 여백을 0으로 설정할 수있는 방법이 있습니까? – Sirac

+0

@Sirac. 모든 여백과 간격을 완전히 제거하기 위해 예제 코드를 업데이트했습니다. – ekhumoro

관련 문제