PySide/PyQt:正在检测 QPushButton 状态?

PySide/PyQt : Detecting QPushButton state?

我正在使用 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 状态,还是我需要使用按钮计数器方法或类似方法实现单独的事件过滤器?

干杯!

要获取按钮状态,请使用 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)