在程序中主动触发按钮,改变按钮的状态,其效果与人为按下按钮效果一样。
在下图中制作了两个按钮,当一个按钮按下时,再去按另一个按钮时,第一个被按下的按钮会被关闭,图中滑动按钮可在我的下一篇文章中详解。
一、示意图
二、代码
from PyQt5.QtCore import QCoreApplication, Qt
from PyQt5.QtGui import QMouseEvent
def fake_clicked(_button):
event = QMouseEvent(
QMouseEvent.MouseButtonRelease,
pos=_button.mapToGlobal(QPoint(0, 0)),
globalPos=_button.mapToGlobal(QPoint(0, 0)),
button=Qt.LeftButton,
buttons=Qt.LeftButton,
modifiers=Qt.NoModifier)
QCoreApplication.postEvent(_button, event)
使用fake_clicked函数,并传入需要按下的按钮对象,就可以使按钮被主动触发
三、参数详情
1. 鼠标按下后施放事件 QMouseEvent.MouseButtonRelease,
2. 鼠标事件发生时的窗口坐标 _button.mapToGlobal(QPoint(0, 0)),
3. 鼠标事件发生时的全局坐标 _button.mapToGlobal(QPoint(0, 0)),
4. 触发事件的按钮 Qt.LeftButton,
5. 触发事件时所有按钮的状态 buttons=Qt.LeftButton,
6. 事件发生时的修饰键状态 modifiers=Qt.NoModifier