单击按钮时如何调用两个函数?

时间:2014-07-03 02:53:04

标签: python qt pyqt pyside signals-slots

这是我的按钮

# Delete button
deleteButton = QtGui.QPushButton("X", self)
deleteButton.clicked[bool].connect(lambda: self.delete_listener(listener))

我想做点什么

deleteButton.clicked[bool].connect(lambda: self.delete_listener(listener))
deleteButton.clidked[bool].connect(lambda: self.stop_send_data())

我能想到的最简单方法是制作

delete_listener 

呼叫

stop_send_data

但无论如何我可以绕过那个?

2 个答案:

答案 0 :(得分:4)

  

我想做点什么......

你做到了吗?因为它确实有效。在Qt中,您可以将单个信号连接到多个插槽。执行顺序可能无法保证,因此无关紧要。但是,如果订单很重要,您可以执行user2600939建议的操作(将两个操作都放在一个操作中)。

一次点击完成两项操作的小例子:

from __future__ import print_function
from PySide import QtGui

app = QtGui.QApplication([])

button = QtGui.QPushButton('Click me')
button.clicked.connect(lambda: print('tip'))
button.clicked.connect(lambda: print('top'))
button.show()

app.exec_()

答案 1 :(得分:0)

创建一个调用这两种方法的方法......

class ClassName:
    #init and other methods...

    def deleteButtonMethod(self,listener):
        self.delete_listener(listener)
        self.stop_send_data()

然后在使用

单击按钮时调用您的方法
deleteButton.clicked[bool].connect(lambda: self.deleteButtonMethod(listener))

我没有pyside的经验所以我离开lambda你可能只是打电话给...     deleteButton.clicked [BOOL] .connect(self.deleteButtonMethod(受听者))