次のように定義された関数があります。
def func(self, boolVal):
QPushButton()
そして、この関数との間の接続を次のように作成したいと思います。
self.button1.clicked.connect(partial(self.func, False))
これを実行すると、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_()
それでもエラーが発生する場合は、func
署名を次のように置き換えます。
def func(self, boolVar, checked):
print boolVar
最初の引数は、self
書き込み時にバインドされるパラメーターですself.func
。2 番目の引数は にFalse
指定したものであるため、Qt が 3 番目の boolパラメーターpartial
でそれを呼び出すと、3 つの引数が得られます。checked
QPushButton.clicked
書くだけ:
self.button1.clicked.connect(self.func)
ただし、checked
パラメーターはオプションであるため、次のfunc
ように定義する必要があります。
def func(self, checked=False):