0

ユーザーがクリックできる 2 つのボタンがあり、FileDiagloag を開いてファイルを選択します。ユーザーが 2 つのファイルを選択する必要がありますが、1 つの関数で両方のボタン呼び出しを処理する必要があります。したがって、私のinitには次のものがあります。

QtCore.QObject.connect(self.ui.Button_SelectJoinFiles_1, QtCore.SIGNAL('clicked()'), self.SelectLogFileToJoin(1))
QtCore.QObject.connect(self.ui.Button_SelectJoinFiles_2, QtCore.SIGNAL('clicked()'), self.SelectLogFileToJoin(2))

関数は基本的に次のようなものです。

def SelectLogFileToJoin(self, ButtonNum):
        if(ButtonNum==1):
        ......
        if(ButtonNum==2)
        .....

しかし、プログラムを起動すると、ファイル選択ダイアログが表示されるため、これは機能しません。

引数をコールバック関数に渡す方法を教えてください。

4

1 に答える 1

3

ここでの問題は、関数自体ではなく、関数によって返された値を渡していることです。必要なことを行うには、functools.partial()引数が事前に入力された新しい関数を作成するために使用する必要があります。

from functools import partial

...

QtCore.QObject.connect(..., partial(self.SelectLogFileToJoin, 1))
于 2012-06-13T15:50:17.860 に答える