显然我的应用程序。跑,但我没有看到任何东西

时间:2009-10-17 22:54:49

标签: python macos pyqt

我正在学习python和Qt来创建图形桌面应用程序。我使用Qt Designer设计了UI并使用pyuic将.ui转换为.py,根据我正在关注的教程,我应该可以运行我的应用程序。但是当我这样做时,会打开一个终端窗口并显示:

cd '/Users/andresacevedo/' && '/opt/local/bin/python2.6'  '/Users/andresacevedo/aj.pyw'  && echo Exit status: $? && exit 1
Exit status: 0
logout

[Process completed]

这是否意味着应用程序。退出没有错误?那为什么我没有看到我设计的UI?

P.S。我正在使用OS X Snow leopard

谢谢,


编辑(这是我的应用的源代码。)

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

# Form implementation generated from reading ui file 'principal.ui'
#
# Created: Sat Oct 17 15:07:17 2009
#      by: PyQt4 UI code generator 4.6
#
# WARNING! All changes made in this file will be lost!

from PyQt4 import QtCore, QtGui

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(379, 330)
        self.centralwidget = QtGui.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtGui.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 379, 22))
        self.menubar.setObjectName("menubar")
        self.menuMenu_1 = QtGui.QMenu(self.menubar)
        self.menuMenu_1.setObjectName("menuMenu_1")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtGui.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)
        self.actionOpcion_1 = QtGui.QAction(MainWindow)
        self.actionOpcion_1.setObjectName("actionOpcion_1")
        self.menuMenu_1.addAction(self.actionOpcion_1)
        self.menubar.addAction(self.menuMenu_1.menuAction())

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

    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8))
        self.menuMenu_1.setTitle(QtGui.QApplication.translate("MainWindow", "Menu 1", None, QtGui.QApplication.UnicodeUTF8))
        self.actionOpcion_1.setText(QtGui.QApplication.translate("MainWindow", "Opcion 1", None, QtGui.QApplication.UnicodeUTF8))

3 个答案:

答案 0 :(得分:1)

问题是你的python代码只是定义一个类,但没有调用该类的主程序或导致QT弹出一个窗口。

你的Ui_MainWindow类实际上并不是QMainWindow的子类,这似乎有点不寻常;它本身不是一个小部件,但它只是配置传递给它的MainWindow。但我认为这仍然有效,例如下面的(未经测试的)代码。

import sys
from PyQt4 import Qt

# (define class Ui_MainWindow here...)

if __name__=="__main__":

    app=Qt.QApplication(sys.argv)
    mywin = Qt.QMainWindow()
    myui = Ui_MainWindow(mywin)
    myui.setupUI(mywin)

    app.connect(app, Qt.SIGNAL("lastWindowClosed()"),
                app, Qt.SLOT("quit()"))
    mywin.show()

    app.exec_()

答案 1 :(得分:1)

我正在做非常新手的问题,因为我是一个pyqt新手......发生的事情是我在没有-x属性的情况下调用了pyuic,所以代码只创建了UI而不是运行它的代码无论如何,你的帮助非常宝贵。

答案 2 :(得分:0)

从Qt Designer获得的代码只是一个包含一组小部件的类。它不是一个应用程序。有关如何在应用程序中使用Designer代码的信息,请参阅PyQt manual。我建议先阅读一些Qt教程,先编写一些“hello world”应用程序,然后再编写使用Designer表单的应用程序。