我正在研究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)
答案 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。