3

次のように定義された関数があります。

def func(self, boolVal):

QPushButton()そして、この関数との間の接続を次のように作成したいと思います。

self.button1.clicked.connect(partial(self.func, False))

これを実行すると、func()正確に 2 つの引数 (与えられた 3 つ) を取ることがわかります。

4

2 に答える 2

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_()

それでもエラーが発生する場合は、func署名を次のように置き換えます。

def func(self, boolVar, checked):
    print boolVar
于 2013-10-07T10:45:44.910 に答える
0

最初の引数は、self書き込み時にバインドされるパラメーターですself.func。2 番目の引数は にFalse指定したものであるため、Qt が 3 番目の boolパラメーターpartialでそれを呼び出すと、3 つの引数が得られます。checkedQPushButton.clicked

書くだけ:

self.button1.clicked.connect(self.func)

ただし、checkedパラメーターはオプションであるため、次のfuncように定義する必要があります。

def func(self, checked=False):
于 2013-10-07T10:39:42.397 に答える