类型错误:QApplication(List [str]):没有足够的参数

时间:2017-05-24 02:58:57

标签: python pyqt typeerror pyqt5 qapplication

免责声明:我对编程相对较新,尤其是Python新手。 我正在尝试学习使用PyQt5构建GUI并且我一直收到错误“类型错误:QApplication(List [str]):没有足够的参数”在尝试启动我的应用程序时......我没有看到任何参数使用是有道理的,我尝试过的(那将是有效的)然后使它说“模块。 init ()最多需要2个参数(给定3个)”

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

2 个答案:

答案 0 :(得分:0)

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

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)

答案 1 :(得分:0)

查看您的代码我注意到您将QApplication与某些Widget混淆。

  

QApplication类管理GUI应用程序的控制流程   和主要设置。 它不是一个小工具。

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

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'))