2009-10-17 4 views
0

나는 파이썬과 Qt를 배우며 그래픽 데스크탑 애플리케이션을 만든다. Qt 디자이너로 UI를 디자인하고 .ui을 pyuic을 사용하여 .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. 나는 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 인 이유는 무엇입니까? 당신은 창문에서 일하고 있지 않습니다. –

+0

이며 간단한 명령 행에서 실행할 수 있습니다 (예 : /opt/local/bin/python2.6 aj.py – Mark

+0

예, 이름이 aj인데 확장자를 .py로 바꿨지 만 그 확장자로 같은 일이 일어났습니다. – MrAn3

답변

1

문제는 당신의 파이썬 코드는 단순히 정의하는 것입니다 클래스를 호출하지만 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

Qt3 예를 들어, 그의 코드는 Qt4입니다. –

1

나는 내가 PyQt는 초보자 해요 잘 때문에, 아주 초보자 질문을하고 있어요 ... 나는 -x 특성이없는 pyuic라는 것이 었습니다 일어나고, 그래서 코드는 UI를 만들고 있지만 있었는지 어쨌든 당신의 도움은 매우 귀중했습니다.

0

Qt Designer에서 가져온 코드는 위젯 집합이있는 클래스 일뿐입니다. 그것은 응용 프로그램이 아닙니다. 응용 프로그램에서 Designer 코드를 사용하는 방법은 PyQt manual을 참조하십시오. Qt 튜토리얼을 먼저 읽고, "hello world"애플리케이션을 먼저 작성한 다음 Designer 폼을 사용하는 애플리케이션을 작성하는 것이 좋습니다.

관련 문제