QWidget:必须在QPaintDevice python之前构造QApplication

QWidget:必须在QPaintDevice python之前构造QApplication,python,pyqt,Python,Pyqt,我在pyqt代码文件中导入另一个Python模块,以获取输入并显示输出。但它给了我错误 QWidget:必须在QPaintDevice之前构造QApplication 我的代码是: from PyQt4 import QtGui import sys from untitled import Ui_MainWindow from PyQt4.QtCore import SIGNAL from PyQt4.QtGui import QDialog, QApplication, QPushButto

我在pyqt代码文件中导入另一个Python模块,以获取输入并显示输出。但它给了我错误

QWidget:必须在QPaintDevice之前构造QApplication

我的代码是:

from PyQt4 import QtGui
import sys
from untitled import Ui_MainWindow
from PyQt4.QtCore import SIGNAL
from PyQt4.QtGui import QDialog, QApplication, QPushButton, QLineEdit, QFormLayout
from naivebase import *


class Main (QtGui.QMainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.pushButton.clicked.connect(self.pushButton_clicked)
        self.ui.lineEdit.returnPressed.connect(self.pushButton_clicked)
        # self.connect(QPushButton(), SIGNAL("clicked()"),  self.pushButton_clicked)

    def pushButton_clicked(self):
         text1 = self.ui.lineEdit.text()
         # print text1
         ob2 = TweetClassfier()
         txt = ob2.lbl1
         self.ui.label_2.setText(txt)


if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    window = Main()
    window.show()
    sys.exit(app.exec_())
我已经调试了代码,它在这一行之后给了我这个错误

QtGui.QMainWindow.__init__(self)

您已经从
QtGui
导入了
QApplication
。这意味着不需要在
app=QtGui.QApplication(sys.argv)
中引用
QtGui

试试看:
app=qapplicationpn(sys.argv)

编辑:但这可能不是原因。另一个猜测是,正如我在上面所评论的,避免导入带有星号的
naivebase
,这会与您的命名空间相勾结,并可能导致错误,例如,如果其他东西被称为
app


编辑:如果没有
untitled
(可能想给它一个有意义的名字)和
naivebase
的内容,我们最终无法确切地知道哪里出了问题,而不是
QMainWindow。
,试试
super(QMainWindow,self)。\uu init\uuu()

这应该行得通


还要确保naivebase和untitled没有任何代码试图在主流中实例化QtGui对象。在调用
QApplication()
之前发生的任何事情都应该是
def
class
内容或纯python内容。这里我指的不是经典的
,而是文件中def或类定义之外的任何其他代码或赋值。

请先运行此命令,并且只运行一次:
app=QtGui.QApplication(sys.argv)

然后运行:

if __name__ == "__main__":
    window = Main()
    window.show()
    sys.exit(app.exec_())

naivebase
的内容是什么?Naivbase正在使用NLTKC实现一个分类器。您可以编辑您的帖子以包含“naivebase”?我猜您正在导入的内容(无论是
untitled
还是
naivebase
)都会在导入时创建某种小部件。两件事:1。在定义
类Main(QtGui.QApplication)
的行上有一个额外的空间(在原始代码中可能没有)。这是一个很长的问题,但是否会因为导入`naivebase'中的所有名称而发生命名空间冲突