如何通过单击一个按钮使pyqt调用两种方法

时间:2018-10-19 16:59:12

标签: python opencv button pyqt5

当我在PyQt中单击一个按钮时,如何调用两种方法

self.trainPreproBtn.clicked.connect(self.preproClicked, self.thresClicked)

@pyqtSlot()
def preproClicked(self):
    gray = cv2.cvtColor(self.image, cv2.IMREAD_COLOR)
    self.image = cv2.cvtColor(gray,cv2.COLOR_BGR2GRAY)
    #(thresh, im_bw) = cv2.threshold(self.image, 128, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)
    #resize_image = cv2.resize(im_bw, (180, 180))
    self.displayImage(2)
@pyqtSlot()
def thresClicked(self):
    gray = cv2.cvtColor(self.image, cv2.IMREAD_COLOR)
    self.image = cv2.cvtColor(gray, cv2.COLOR_BGR2GRAY)
    self.image = cv2.threshold(self.image, 128, 255, cv2.THRESH_BINARY )
    self.displayImage(4)

谢谢

2 个答案:

答案 0 :(得分:0)

您可以创建一个调用其他两个函数的函数,并将其与按钮连接。

self.trainPreproBtn.clicked.connect(self.connectionFunction)

@pyqtSlot()
def connectionFunction(self):
    self.firstFunction()
    self.secondFunction()

我从不在脚本中使用@pyqtSlot()装饰器,但是我认为它应该在这里,因为您在代码中使用了它。

答案 1 :(得分:0)

您还可以呼叫2组连接:

self.trainPreproBtn.clicked.connect(self.preproClicked)
self.trainPreproBtn.clicked.connect(self.thresClicked)