2011-08-23 28 views
5

Tôi đang cố gắng chạy ứng dụng đầu tiên của mình trong pyqt. hình thức của tôi có vẻ tốt đẹp khi tôi đang làm xem trước trong thiết kế:Tạo biểu mẫu đơn giản với qt-designer và pyqt

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

Nhưng nếu tôi thấy nó từ kịch bản của tôi tôi nhận:

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

Và thông tin trong thiết bị đầu cuối: QLayout: Đang cố gắng thêm QLayout "" vào MyForm "Biểu mẫu", đã có bố cục

Câu hỏi đặt ra là, điều gì sai với thiết kế của tôi?

tập tin được tạo ra bởi 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)) 

Và kịch bản của tôi được sử dụng nó: import sys từ PyQt4 nhập khẩu 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_()) 

Tôi tạo ra hình thức sử dụng được thiết kế riêng và tôi đã nhận 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> 

Trả lời

12

Tôi sẽ nói rằng bạn đã thiết kế một QWidget trong trình thiết kế và tạo một QMainWindow. Thay

class MyForm(QtGui.QMainWindow) 

bởi

class MyForm(QtGui.QWidget) 
+0

Chính xác! Cảm ơn bạn. – Adam

Các vấn đề liên quan