运行 Python 文件

3 投票
2 回答
4046 浏览
提问于 2025-04-17 10:05

我正在用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。

撰写回答