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