2011-08-23 22 views
5

Sto tentando di eseguire la mia prima applicazione in pyqt. La mia forma osserva benissimo quando sto facendo anteprima in Designer:Creazione di un modulo semplice con qt-designer e pyqt

http://imageshack.us/photo/my-images/171/screenshotuw.png/

Ma se sto mostrando dal mio script che ho ottenuto:

http://imageshack.us/photo/my-images/268/screenshot1hwn.png/

E le informazioni nel terminale: QLayout: Tentativo di aggiungere QLayout "" a MyForm "Form", che ha già un layout

La domanda è: cosa c'è di sbagliato nel mio progetto?

file generato da pyuic4:

# -*- coding: utf-8 -*- 

# Form implementation generated from reading ui file 'gui.ui' 
# 
# Created: Tue Aug 23 11:17:30 2011 
#  by: PyQt4 UI code generator 4.7.2 
# 
# WARNING! All changes made in this file will be lost! 

from PyQt4 import QtCore, QtGui 

class Ui_Form(object): 
    def setupUi(self, Form): 
    Form.setObjectName("Form") 
    Form.resize(464, 409) 
    self.verticalLayout_2 = QtGui.QVBoxLayout(Form) 
    self.verticalLayout_2.setObjectName("verticalLayout_2") 
    self.horizontalLayout = QtGui.QHBoxLayout() 
    self.horizontalLayout.setObjectName("horizontalLayout") 
    self.listView = QtGui.QListView(Form) 
    self.listView.setObjectName("listView") 
    self.horizontalLayout.addWidget(self.listView) 
    self.verticalLayout = QtGui.QVBoxLayout() 
    self.verticalLayout.setObjectName("verticalLayout") 
    self.pushButton = QtGui.QPushButton(Form) 
    self.pushButton.setObjectName("pushButton") 
    self.verticalLayout.addWidget(self.pushButton) 
    self.pushButton_2 = QtGui.QPushButton(Form) 
    self.pushButton_2.setObjectName("pushButton_2") 
    self.verticalLayout.addWidget(self.pushButton_2) 
    spacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) 
    self.verticalLayout.addItem(spacerItem) 
    self.pushButton_3 = QtGui.QPushButton(Form) 
    self.pushButton_3.setObjectName("pushButton_3") 
    self.verticalLayout.addWidget(self.pushButton_3) 
    self.horizontalLayout.addLayout(self.verticalLayout) 
    self.verticalLayout_2.addLayout(self.horizontalLayout) 
    self.textBrowser = QtGui.QTextBrowser(Form) 
    self.textBrowser.setObjectName("textBrowser") 
    self.verticalLayout_2.addWidget(self.textBrowser) 

    self.retranslateUi(Form) 
    QtCore.QMetaObject.connectSlotsByName(Form) 

    def retranslateUi(self, Form): 
    Form.setWindowTitle(QtGui.QApplication.translate("Form", "Form", None, QtGui.QApplication.UnicodeUTF8)) 
    self.pushButton.setText(QtGui.QApplication.translate("Form", "PushButton", None, QtGui.QApplication.UnicodeUTF8)) 
    self.pushButton_2.setText(QtGui.QApplication.translate("Form", "PushButton", None, QtGui.QApplication.UnicodeUTF8)) 
    self.pushButton_3.setText(QtGui.QApplication.translate("Form", "PushButton", None, QtGui.QApplication.UnicodeUTF8)) 

E il mio script che lo utilizza: import sys da PyQt4 importazione QtCore, QtGui

from gen import Ui_Form 


    class MyForm(QtGui.QMainWindow): 
     def __init__(self, parent=None): 
      QtGui.QWidget.__init__(self, parent) 
      self.ui = Ui_Form() 
      self.ui.setupUi(self) 
     def execute_event(self): 
      pass 
     def execute_all_event(self): 
      pass 
     def reload_event(self): 
      pass 

    if __name__ == "__main__": 
     app = QtGui.QApplication(sys.argv) 
     myapp = MyForm() 
     myapp.show() 
     sys.exit(app.exec_()) 

ho creato modulo utilizzando progettista e ho ottenuto gui .ui file:

<?xml version="1.0" encoding="UTF-8"?> 
<ui version="4.0"> 
<class>Form</class> 
<widget class="QWidget" name="Form"> 
    <property name="geometry"> 
    <rect> 
    <x>0</x> 
    <y>0</y> 
    <width>464</width> 
    <height>409</height> 
    </rect> 
    </property> 
    <property name="windowTitle"> 
    <string>Form</string> 
    </property> 
    <layout class="QVBoxLayout" name="verticalLayout_2"> 
    <item> 
    <layout class="QHBoxLayout" name="horizontalLayout"> 
    <item> 
     <widget class="QListView" name="listView"/> 
    </item> 
    <item> 
     <layout class="QVBoxLayout" name="verticalLayout"> 
     <item> 
    <widget class="QPushButton" name="pushButton"> 
    <property name="text"> 
     <string>PushButton</string> 
    </property> 
    </widget> 
     </item> 
     <item> 
    <widget class="QPushButton" name="pushButton_2"> 
    <property name="text"> 
     <string>PushButton</string> 
    </property> 
    </widget> 
     </item> 
     <item> 
    <spacer name="verticalSpacer"> 
    <property name="orientation"> 
     <enum>Qt::Vertical</enum> 
    </property> 
    <property name="sizeHint" stdset="0"> 
     <size> 
     <width>20</width> 
     <height>40</height> 
     </size> 
    </property> 
    </spacer> 
     </item> 
     <item> 
    <widget class="QPushButton" name="pushButton_3"> 
    <property name="text"> 
     <string>PushButton</string> 
    </property> 
    </widget> 
     </item> 
     </layout> 
    </item> 
    </layout> 
    </item> 
    <item> 
    <widget class="QTextBrowser" name="textBrowser"/> 
    </item> 
    </layout> 
</widget> 
<resources/> 
<connections/> 
</ui> 

risposta

12

Direi che hai progettato un QWidget nella finestra di progettazione e crei un QMainWindow. Sostituire

class MyForm(QtGui.QMainWindow) 

da

class MyForm(QtGui.QWidget) 
+0

Esattamente! Grazie. – Adam

Problemi correlati