2017-05-24 4 views
0

Disclaimer: Ich bin relativ neu in der Programmierung und besonders neu in Python. Ich versuche zu lernen, eine GUI mit PyQt5 zu bauen und ich bekomme weiterhin den Fehler "Typ Fehler: QApplication (List [str]): nicht genug Argumente" beim Versuch, meine Anwendung zu starten ... Ich sehe keine Argumente das wäre sinnvoll zu nutzen, und diejenigen, die ich versucht habe (das wären gültig), dann weil es zu sagen „-Modul. init() nimmt höchstens 2 Argumente (3 gegeben)“Type Fehler: QApplication (List [str]): nicht genug Argumente

import sys 
from PyQt5 import QtWidgets, QtGui 

class Main(QtWidgets.QApplication): 
    def __init__(self): 
     super(Main, self).__init__() 
     self.setGeometry(100, 100, 300, 500) 
     self.setWindowTitle('HelloWorld') 
     self.setWindowIcon(QtWidget.QIcon('Image.png')) 
     self.show() 

app = QtWidgets.QApplication(sys.argv) 
gui = Main() 
sys.exit(app.exec_()) 
+0

Änderung 'Klasse Main (QtWidgets.QApplication)' geändert haben 'Klasse Haupt (QtWidgets.QMainWindow)' – eyllanesc

Antwort

0

Code Anzeigen bemerkte ich, dass Sie QApplication mit einigen Widget sind verwirrend.

The QApplication class manages the GUI application's control flow and main settings. It's Not a Widget.

In Ihrem Fall, dass Sie ein Widget zum Beispiel verwenden:

import sys 
from PyQt5 import QtWidgets, QtGui 

class Main(QtWidgets.QWidget): 
    def __init__(self): 
     super(Main, self).__init__() 
     self.setGeometry(100, 100, 300, 500) 
     self.setWindowTitle('HelloWorld') 
     self.setWindowIcon(QtGui.QIcon('Image.png')) 
     self.show() 

app = QtWidgets.QApplication(sys.argv) 
gui = Main() 
sys.exit(app.exec_()) 

Anmerkung: Ich self.setWindowIcon(QtWidget.QIcon('Image.png')) zu self.setWindowIcon(QtGui.QIcon('Image.png'))

0

QtWidgets.QApplication.__init__() erfordert mindestens eine Liste von Argumenten, die beim Start an sie übergeben werden. Meine Vermutung ist, dass Ihr Code fehlschlägt, wenn Sie versuchen, Ihre eigene Main Klasse zu initialisieren, die QtWidgets.QApplication init aufruft. Versuchen:

class Main(QtWidgets.QApplication): 
    def __init__(self, *args, **kwargs): # allow it to receive any number of arguments 
     super(Main, self).__init__(*args, **kwargs) # forward to 'super' __init__() 
     # etc. 

# when initializing: 
gui = Main(sys.argv) 
Verwandte Themen