python中偏函数的参数

use*_*234 3 python pyqt

我有一个这样定义的函数:

def func(self, boolVal):
Run Code Online (Sandbox Code Playgroud)

我想在QPushButton()这个函数之间创建一个连接,如下所示:

self.button1.clicked.connect(partial(self.func, False))
Run Code Online (Sandbox Code Playgroud)

当我运行它时,它告诉我func()正好需要 2 个参数(给出 3 个)有人知道为什么会发生这种情况吗?

fal*_*tru 5

functools.partial 工作正常。

请参阅以下示例:

from functools import partial
from PyQt4.QtGui import *

class MyWindow(QWidget):
    def __init__(self):
        super(QWidget, self).__init__()
        self.button = QPushButton('test', parent=self)
        self.button.clicked.connect(partial(self.func, False))
        self.button.show()
    def func(self, boolVar):
        print boolVar

app = QApplication([])
win = MyWindow()
win.show()
app.exec_()
Run Code Online (Sandbox Code Playgroud)

如果仍然出现错误,请将func签名替换为:

def func(self, boolVar, checked):
    print boolVar
Run Code Online (Sandbox Code Playgroud)