Pyside只执行一次动作

时间:2013-03-15 04:29:38

标签: python qt pyside

我有两个按钮,我通过信号插槽连接,如此

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

不是每次我点击button_1,button_2都会执行他们的功能。按钮位于按钮组中,因此一次只能检查一个,我遇到的问题是每次按下按钮时该功能都会运行,但我希望该功能只运行一次。有没有办法做到这一点?

2 个答案:

答案 0 :(得分: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

希望有所帮助。

答案 1 :(得分:0)

我知道这个问题已经很晚了,但是如果其他人有这个问题,另一个建议就是在运行后通过setDisabled(True)方法禁用该按钮。这可以防止它被激活并向用户反馈他们无法再次运行它。

self.button_1.setDisabled(True)在函数体内的某处。