2016-05-18 13 views
8

bir düzen vardır " "MainWindow üzerinde"" QLayout ayarlanmaya çalışılıyor ve bunun şimdiye kadar benim kodudur:QWidget :: setLayout: Zaten PyQt4 bir uygulama yapıyorum

import sys 
from PyQt4 import QtGui, QtCore 

class MainWindow(QtGui.QMainWindow): 

    def __init__(self): 
     super(MainWindow, self).__init__() 
     self.initUi() 

    def initUi(self): 
     self.setWindowTitle('Main Menu') 
     self.setFixedSize(1200, 625) 
     self.firstWidgets() 
     self.show() 

    def firstWidgets(self): 
     self.vbox1 = QtGui.QVBoxLayout() 
     self.task1 = QtGui.QLabel('Check 1', self) 
     self.task1CB = QtGui.QCheckBox(self) 
     self.hbox1 = QtGui.QHBoxLayout() 
     self.hbox1.addWidget(self.task1) 
     self.hbox1.addWidget(self.task1CB) 
     self.vbox1.addLayout(self.hbox1) 

     self.setLayout(self.vbox1) 


def main(): 
    application = QtGui.QApplication(sys.argv) 
    gui = MainWindow() 
    sys.exit(application.exec_()) 

if __name__=='__main__': 
    main() 

Benim sorundur MainWindow.firstWidgets(). Ben bir düzen kurmayı deneyin ama bu beni karıştırır o form için .setLayout kullanarak ilk kez olsa bile bir hata alıyorum.

QWidget :: setLayout: Zaten bir düzen

cevap

14

Sen QMainWindow doğrudan bir QLayout ayarlayamıyor var " "MainWindow üzerinde"" QLayout ayarlanmaya çalışılıyor. Bir QWidget oluşturup QMainWindow üzerinde merkez parçacık olarak ayarlamak ve buna QLayout atamanız gerekir.

wid = QtGui.QWidget(self) 
self.setCentralWidget(wid) 
layout = QtGui.QVBoxLayout() 
wid.setLayout(layout) 
+0

Ah QtGui.QWidget yerine QMainWindow devralan benim MainWindow sınıfına bu ilişkilidir? QMainWindow QtGui.MainWindow miras oldu içini o menü çubuğu almak için tek yol gibi görünüyordu. – WewLad

+0

Evet, muhtemelen bir uygulama pencere gibi aslında görünüyor tek sınıf var ve işlevleri nedeniyle QMainWindow' 'devralmak istiyorum. Sadece düzenleri kabul etmiyor. –

+0

Ah harika çalışıyor, bunun için teşekkürler. – WewLad