运行 Python 文件
我正在用pyqt4和python26开发一个应用程序。我用qt designer创建了表单(.ui文件)。然后我把它们转换成了.py和.pyc文件。但是当我尝试运行.py文件时,Python的命令行窗口一闪而过,根本看不到表单(对应的.ui文件)……这可能是什么问题呢?
这是我的代码:(.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)
2 个回答
0
你的Python代码只是导入了一些模块,然后定义了一个新的类。不过,它并没有对这个定义的类做任何事情。换句话说,一旦Python创建了这个新类,它就结束了,然后退出了。
我对PyQT一点都不了解,但很可能你需要启动图形界面的主循环,并且还要创建你新类的一个实例,然后把它传给PyQT。
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。