PySide/PyQt :检测 QPushButton 状态



我正在使用ffmpeg在pyside中实现一个电影播放器。将帧发送到 QImage 缓冲区一切正常,我可以使用 python timer(( 函数来控制播放速率,除了我无法弄清楚如何暂停之外,我可以停止和启动正常。即,暂停按钮是一个双状态按钮,根据连续单击按钮时的状态进行播放或暂停。

我设置了按钮:

    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)

最新更新