2016-06-05 5 views
-2

Ich importiere ein anderes Python-Modul in meine pyqt-Codedatei, um Eingaben zu erhalten und die Ausgabe anzuzeigen. aber es michQWidget: Muss eine QApplication vor einem QPaintDevice-Python erstellen

QWidget Fehler gibt: Muss ein QApplication vor einem QPaintDevice konstruieren

Mein Code ist:

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_()) 

ich den Code debuggt haben es gibt mir diesen Fehler nach dieser Zeile

+1

Was den Inhalt des 'naivebase' ist? – Abstracted

+0

Naivbase implementiert einen Klassifikator mit nltk – SmartF

+1

Können Sie Ihren Beitrag bearbeiten, um 'naivebase' einzubinden? – Abstracted

Antwort

0

Sie haben bereits importiert QApplication von QtGui. Dies bedeutet, dass nicht auf QtGui in app = QtGui.QApplication(sys.argv) verwiesen werden muss.

Versuchen: app = QApplicatiopn(sys.argv)

Edit: Dies ist wahrscheinlich nicht der Grund, though. Eine andere Vermutung ist, wie ich oben kommentierte, zu vermeiden, naivebase mit Sternchen zu importieren, der Ihren Namespace kollidiert und zu Fehlern führen kann, z. wenn etwas anderes app heißt.

Edit: Am Ende können wir nicht wirklich sicher wissen, was falsch ist, ohne den Inhalt von untitled (vielleicht einen aussagekräftigen Namen geben) und naivebase.

0

Statt der QMainWindow.__init__(self), versuchen mit super(QMainWindow, self).__init__()

Das sollte funktionieren.

Stellen Sie außerdem sicher, dass naivebase und untitled keinen Code haben, der versucht, QtGui-Objekte im Hauptfluss zu instanziieren. Alles, was vor dem QApplication() Aufruf geschieht, sollte def und class Zeug oder pure-Python Zeug sein. Damit meine ich nicht den klassischen if __name__ == '__main__', sondern irgendeinen anderen Code oder eine andere Zuweisung in der Datei, die außerhalb einer Def- oder Klassendefinition liegt.

1

laufen diese erste und nur ein einziges Mal: ​​ app = QtGui.QApplication(sys.argv)

dann laufen:

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