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)
我正在使用 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)