运行python文件

时间:2012-01-12 09:37:17

标签: python pyqt4

我正在研究pyqt4和python26应用程序。我使用qt designer(.ui文件)创建了表单。 我将它们转换为.py和.pyc文件。但是当我尝试运行.py文件时,python命令行在一秒钟内进来,表单(相应的.ui文件)无法看到...可能是什么问题??

这是我的代码:(。py file)

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)

2 个答案:

答案 0 :(得分:4)

首先,不要使用:

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

相反:

from PyQt4 import QtCore, QtGui

明确引用模块。

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。

答案 1 :(得分:0)

您的python代码只导入一些模块,然后定义一个新类。但它对它定义的类没有任何作用。换句话说,一旦Python完成创建新类,它就完成了,它就会退出。

我根本不知道PyQT,但很可能你需要启动GUI的主循环,并且还要实例化新类的实例并将其传递给PyQT。