2009-10-17 85 views
0

我正在学习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雪豹

感谢,


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

# -*- 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)) 
+0

是否'aj'是您的应用程序的名称?为什么它有一个.pyw扩展名?你不在Windows上工作。 – 2009-10-17 23:05:40

+0

,你可以从一个简单的命令行 - 例如/opt/local/bin/python2.6 aj.py – Mark 2009-10-17 23:38:34

+0

是的,这个名字是aj,我改变了它的扩展名.py,但是扩展名发生了同样的事情。例如,他的代码是Qt4,例如 – MrAn3 2009-10-18 04:14:00

回答

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_() 
+0

。 – 2009-10-18 09:05:33

1

我做的非常新手问题,很好,因为我是一个PyQt的新手...发生了什么事是我叫pyuic没有-x属性,因此代码只是创建用户界面,但不运行它的代码,无论如何,你的帮助是非常有价值的。

0

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

相关问题