0

そのように信号スロットを介して接続した2つのボタンがあります

self.button_1.clicked.connect(self.someFunc)
self.button_2.clicked.connect(self.someFunc2)

いいえ、button_1、button_2 をクリックするたびに、それらの機能が実行されます。ボタンはボタン グループ内にあるため、一度に 1 つしかチェックできません。問題は、ボタンを押すたびに関数が実行されることですが、その関数を 1 回だけ実行したいということです。これを行う方法はありますか?

4

2 に答える 2

0

私はこれがこの質問に対して非常に遅いことを知っていますが、他の誰かがこの問題を抱えている場合、別の提案は、実行後に setDisabled(True) メソッドを介してボタンを無効にすることです. これにより、アクティブ化されなくなり、再度実行できないというフィードバックがユーザーに与えられます。

つまりself.button_1.setDisabled(True)、関数の本体のどこかにあります。

于 2013-08-07T17:18:28.500 に答える
0

関数の先頭に if ステートメント チェックを配置して、関数が実行されたかどうかを確認します。

firstRun = true
def someFunc:
    if not(self.firstRun):
       return
    # doSomeFunc
    self.firstRun = false

または、関数の上部で、接続を切断できます。

http://qt-project.org/doc/qt-4.8/qobject.html#disconnect-4

それが役立つことを願っています。

于 2013-03-15T05:19:36.480 に答える