Type Error: QApplication(List[str]): not enough arguments

Type Error: QApplication(List[str]): not enough arguments

免责声明:我是编程新手,尤其是 Python。 我正在尝试学习使用 PyQt5 构建 GUI,但在尝试启动我的应用程序时我一直收到错误 "Type Error: QApplication(List[str]): not enough arguments" ...已经尝试过(这将是有效的)然后让它说“ module.init() takes at most 2 arguments (3 given)"

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

QtWidgets.QApplication.__init__() 至少需要在启动时传递给它的参数列表。我的猜测是,当您尝试初始化自己的调用 QtWidgets.QApplication init 的 Main class 时,您的代码失败了。尝试:

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)

查看您的代码,我注意到您将 QApplication 与某些小部件混淆了。

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

在您的情况下,您可以使用小部件,例如:

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

注意:我把self.setWindowIcon(QtWidget.QIcon('Image.png'))改成了self.setWindowIcon(QtGui.QIcon('Image.png'))