2016-05-18 8 views
8

मैं PyQt4 में आवेदन करने से कर रहा हूँ है" MainWindow पर "QLayout सेट करने के लिए" का प्रयास कर रहा है और यह मेरा कोड अब तक है:QWidget :: setLayout: "है, जो पहले से ही एक लेआउट

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() 

मेरे समस्या है MainWindow.firstWidgets() में। मैं एक लेआउट सेट करने का प्रयास करता हूं लेकिन मुझे एक त्रुटि मिलती है, भले ही यह मेरा पहला समय है जो उस फॉर्म के लिए .setLayout का उपयोग कर रहा है, जो मुझे भ्रमित करता है।

QWidget :: setLayout: ", जो पहले से ही एक लेआउट

उत्तर

14

आप QMainWindow पर सीधे एक QLayout सेट नहीं कर सकता है" MainWindow पर "QLayout सेट करने के लिए" का प्रयास कर रहा। आपको QWidget बनाने की आवश्यकता है और इसे केंद्रीय विजेट पर QMainWindow पर सेट करें और उस पर QLayout असाइन करें।

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

आह यह मेरे मेनविंडो क्लास से QTainWindow को QtGui.QWidget के बजाय विरासत में मिला है? ऐसा लगता है कि उस मेनू को पाने का एकमात्र तरीका QMainWindow के अंदर QtGui.MainWindow का उत्तराधिकारी था। – WewLad

+0

हाँ, आप शायद 'क्यूमेन विन्डो' से उत्तराधिकारी बनना चाहते हैं क्योंकि यह एकमात्र कक्षा है जो वास्तव में एक एप्लिकेशन विंडो की तरह दिखती है और काम करती है। यह सिर्फ लेआउट स्वीकार नहीं करता है। –

+0

आह महान यह काम कर रहा है, इसके लिए धन्यवाद। – WewLad

संबंधित मुद्दे