我有一个这样定义的函数:
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 个)有人知道为什么会发生这种情况吗?
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)