免责声明:我对编程相对较新,尤其是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_())
答案 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'))