TypeError: closeEvent() takes exactly 4 arguments (2 given)

TypeError: closeEvent() takes exactly 4 arguments (2 given)

我正在尝试创建一个仅通过另一种方法打印 a、b、c 的 GUI。我想将此方法与 class 分开,因为它将进入另一个脚本。当我 运行 它时,它打印出正确的结果;但是,它也给出了一个错误。代码:

from PyQt4 import QtGui
import sys

def printStuff(a, b, c):
    print a, b, c

class Login(QtGui.QDialog):

    def __init__(self,a,b,c):
        super(Login, self).__init__()
        self.buttonLogin = QtGui.QPushButton('Print Stuff', self)
        self.buttonLogin.clicked.connect(lambda: self.closeEvent(a,b,c))
        self.grid = QtGui.QGridLayout(self)
        self.setGeometry(650,350,400,150)
        self.setFixedSize(400, 150)

    def closeEvent(self,a,b,c):
        printStuff(a,b,c)
        self.close()

def RunApp(a,b,c):
    app = QtGui.QApplication(sys.argv)
    login = Login(a,b,c)
    login.show()
    app.exec_()

RunApp('1','2','3')

预期结果:1 2 3

实际 Result:1 2 3 类型错误:closeEvent() 正好接受 4 个参数(给定 2 个)

这是误报吗?我该如何纠正?

您正在为连接按钮的 closeEvent 提供更多参数。 closeEvent() 将 QCloseEvent 作为参数。

from PyQt4 import QtGui
import sys

def printStuff(a, b, c):
    print a, b, c

class Login(QtGui.QDialog):

    def __init__(self,a,b,c):
        super(Login, self).__init__()
        self.a = a
        self.b = b
        self.c = c
        self.buttonLogin = QtGui.QPushButton('Print Stuff', self)
        self.buttonLogin.clicked.connect(self.closeGUI)
        self.grid = QtGui.QGridLayout(self)
        self.setGeometry(650,350,400,150)
        self.setFixedSize(400, 150)

    def closeGUI(self):
        printStuff(self.a,self.b,self.c)
        self.close()

def RunApp(a,b,c):
    app = QtGui.QApplication(sys.argv)
    login = Login(a,b,c)
    login.show()
    app.exec_()

RunApp('1','2','3')