2016-07-28 30 views
0

我想設置一個佈局管理器。但得到的消息:pyqt4已經有一個佈局。如何「檢測」或更改?

QLayout: Attempting to add QLayout "" to Window "", which already has a layout 

如何更改或檢測哪種類型的佈局是?我想使用boxlayout,因爲它似乎是首選。

import sys 
from PyQt4 import QtGui as qt 

class Window(qt.QMainWindow): 

    def __init__(self): 
     super(Window, self).__init__() 
     #Lav widgets 
     self.CreateWidgets()  

    def CreateWidgets(self): 
     btn = qt.QPushButton("Fetch", self) 
     btn.clicked.connect(self.GetData) 

     self.layout = qt.QVBoxLayout(self) 

     self.setGeometry(560, 240, 800, 600) 
     self.setWindowTitle("We do not sow") 
     self.show() 

    def GetData(self): 
     print("Hello World!") 

app = qt.QApplication(sys.argv) 
w = Window() 
sys.exit(app.exec_()) 

回答

2

QMainWindow類具有內置的工具欄和碼頭的小部件,以及菜單欄和狀態的支持 - 因此它必須有一個固定的佈局。因此,不必將子窗口小部件添加到主窗口本身,您必須設置其中央窗口小部件,然後將子窗口小部件添加到該窗口小部件中:

def CreateWidgets(self): 
     btn = qt.QPushButton("Fetch", self) 
     btn.clicked.connect(self.GetData) 

     widget = qt.QWidget(self) 
     layout = qt.QVBoxLayout(widget) 
     layout.addWidget(btn) 

     self.setCentralWidget(widget) 

     self.setGeometry(560, 240, 800, 600) 
     self.setWindowTitle("We do not sow") 
相關問題