2012-01-12 12 views
3

私はpyqt4とpython26アプリケーションを開発中です。qt designer(.uiファイル)を使用してフォームを作成しました。 私はそれらを.pyと.pycファイルに変換しました。しかし、私が.pyファイルを実行しようとすると、pythonコマンドラインが来て、1秒以内に入ります。フォーム(対応する.uiファイル)は見えません。問題??pythonファイルを実行中

これは私のコードです:(。PYファイル)

from DlgAbout_ui import Ui_DlgAbout 

from PyQt4.QtCore import * 
from PyQt4.QtGui import * 

import resources 

class DlgAbout(QDialog, Ui_DlgAbout): 

    def __init__(self, parent=None): 
     QDialog.__init__(self, parent) 
     self.setupUi(self) 
     self.logo.setPixmap(QPixmap(":/icons/faunalia_logo.png")) 

     text = self.txt.toHtml() 
     text = text.replace("$PLUGIN_NAME$", "RT Sql Layer") 
     self.txt.setHtml(text) 

答えて

4

まず、使用しないでください。あなたのコードでなど

class DlgAbout(QtGui.QDialog, Ui_DlgAbout): 

、あなたがやったすべてのダイアログボックスを定義しています。実行するメインアプリケーションやダイアログボックスを表示する方法を定義していません。

from PyQt4 import QtGui 
import sys 


class MyMainWindow(QtGui.QMainWindow): 

    def __init__(self, parent=None): 

     super(MyMainWindow, self).__init__(parent) 
     self.form_widget = FormWidget(self) 
     self.setCentralWidget(self.form_widget) 


class FormWidget(QtGui.QWidget): 

    def __init__(self, parent): 
     super(FormWidget, self).__init__(parent) 
     self.layout = QtGui.QVBoxLayout(self) 

     self.button = QtGui.QPushButton("Button!") 
     self.layout.addWidget(self.button) 


if __name__ == "__main__": 
    app = QtGui.QApplication([]) 
    foo = MyMainWindow() 
    foo.show() 
    sys.exit(app.exec_()) 

これは、メインウィンドウを定義し、(あなたが見ることができるようMyMainWindowは、設定)の形式:例えば

、ここで実行するための基本的なメインアプリケーションです。私は、これは、実行(if __name__ == "__main__":)というメインのファイルであるかどうかを確認し、私はアプリケーション(app = QtGui.QApplication([])は、メインウィンドウを作成して開始し、は、メインウィンドウを示した。

あなたのケースでは、あなたが定義することができ あなたのQDialogを警告するようにしてください。

+0

thanx :) :) – poonam

+0

FormWidget(QtGui.QWidget)のQDialog .__ init __(self、parent)を宣言すると、NameError :グローバル名 'QDialog'が定義されていません......助けてください... – poonam

+0

'QtGui.QDialog'を試してください。また、pixmapを 'QtGui.QPixmap'に変更する必要があります。それは私がモジュールを明示的に参照することを意味しました;) – TyrantWave

0

あなたのPythonコードは、単にいくつかのモジュールをインポートして、新しいクラスを定義します。しかし、定義したクラスでは何もしません。言い換えれば、Pythonが新しいクラスを作成し終わると、それは終了し、終了します。

PyQTはまったくわかりませんが、GUIのメインループを起動し、新しいクラスのインスタンスをインスタンス化してPyQTに渡す必要があります。代わりに

from PyQt4.QtCore import * 
from PyQt4.QtGui import * 

from PyQt4 import QtCore, QtGui 

を、明示的にモジュールを参照

関連する問題