TypeError:closeEvent()正好接受4个参数(给定2个)

2024-06-02 10:46:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个GUI,它只是从另一个方法打印a,b,c。我想把这个方法和类分开,因为它会在另一个脚本中。当我运行它时,它会打印出正确的结果;但是,它也会给出一个错误。代码:

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

实际结果:12三 TypeError:closeEvent()正好接受4个参数(给定2个)

这是误报吗?我该怎么纠正呢?你知道吗


Tags: 方法importselfappinitdefsyslogin
1条回答
网友
1楼 · 发布于 2024-06-02 10:46:10

您正在为连接按钮的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')

相关问题 更多 >