PySide / PyQt:检测QPushButton状态?

时间:2018-01-07 13:37:25

标签: video timer pyqt5 pyside qpushbutton

我正在使用ffmpeg在pyside内部实现一个电影播放器​​。所有工作都很好地发送帧到QImage缓冲区我可以使用python timer()函数停止并启动OK以控制播放速率除了我无法弄清楚如何暂停。 即暂停按钮是一个双状态按钮,它将根据按钮的状态连续点击时播放或暂停。

我设置了按钮:

    self.pauseButton = QToolButton()
    self.pauseButton.setCheckable(True)

然后,我认为isDown()方法将确定按钮是处于向上还是向下状态,然后向我在别处定义的timer()函数发送信号。停止和播放按钮启动和停止计时器和图像流确定,但此暂停功能仅暂停:

    if self.pauseButton.isDown():
        self.pauseButton.clicked.connect(lambda: self.timer.start()))
    else:
        self.pauseButton.clicked.connect(lambda: self.timer.stop())

我哪里错了? PySide可以检测QPushButton状态,还是需要使用按钮计数器方法或类似方法实现单独的事件过滤器?

喝彩!

1 个答案:

答案 0 :(得分:0)

要显示按钮状态,请使用self.pauseButton.isChecked()。要获得我认为您正在寻找的功能,您需要检查按钮所连接方法中的按钮状态。

    self.pauseButton.clicked.connect(self.button_assignment)

def button_assignment(self):
    if self.pauseButton.isChecked():
        self.timer.start()
    else:
        self.timer.stop()

编写代码的方式,即按钮在初始化时的状态,是单击信号将连接到的代码。 此外,您单击的连接中的lambda语句不是必需的。只需从函数调用中删除括号即可。 self.pauseButton.clicked.connect(self.timer.stop)

相关问题