我在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)
答案 0 :(得分:1)
首先运行此次且仅运行一次:
app = QtGui.QApplication(sys.argv)
然后运行:
if __name__ == "__main__":
window = Main()
window.show()
sys.exit(app.exec_())
答案 1 :(得分:0)
您已从QApplication
导入QtGui
。这意味着无需在QtGui
中引用app = QtGui.QApplication(sys.argv)
。
尝试:app = QApplicatiopn(sys.argv)
编辑:这可能不是原因。正如我在上面评论的那样,另一个猜测是避免使用星号导入naivebase
,星号会混淆您的命名空间并导致错误,例如:如果其他内容被称为app
。
编辑:最后,如果没有untitled
的内容(可能想给这个有意义的名字)和naivebase
,我们无法确切地知道出了什么问题。
答案 2 :(得分:0)
而不是QMainWindow.__init__(self)
,请尝试使用super(QMainWindow, self).__init__()
这应该有效。
还要确保naivebase和untitled没有任何代码试图在主流中实例化QtGui对象。在QApplication()
调用之前发生的任何事情应该是def
和class
内容或纯python内容。我不是指经典if __name__ == '__main__'
,而是文件中除def或类定义之外的任何其他代码或赋值。