【发布时间】:2021-06-02 19:13:27
【问题描述】:
我正在制作一个自动点击 QWebEngineView 小部件的机器人。
我想模拟鼠标拖动到那个小部件
即:-
-
在 QPoint(100,100) 上按鼠标左键
-
将鼠标移动到 QPoint(500,500)
-
松开鼠标左键
我试过这段代码,但它不起作用:
def drag_from_to(browser_widget, x1, y1, x2, y2):
for child in browser_widget.findChildren(QtWidgets.QWidget):
if (child.metaObject().className() == "QtWebEngineCore::RenderWidgetHostViewQtDelegateWidget"):
#I also tried sending the event to 'browser_widget' instead of 'child'
event_press = QtGui.QMouseEvent(QtCore.QEvent.MouseButtonPress, QtCore.QPoint(x1, y1),
QtCore.Qt.LeftButton, QtCore.Qt.LeftButton, QtCore.Qt.NoModifier, )
QtCore.QCoreApplication.postEvent(child, event_press)
event_move = QtGui.QMouseEvent(QtCore.QEvent.MouseMove, QtCore.QPoint(x2, y2),
QtCore.Qt.LeftButton, QtCore.Qt.LeftButton, QtCore.Qt.NoModifier, )
QtCore.QCoreApplication.postEvent(child, event_move)
event_release = QtGui.QMouseEvent(QtCore.QEvent.MouseButtonRelease, QtCore.QPoint(x2, y2),
QtCore.Qt.LeftButton, QtCore.Qt.LeftButton, QtCore.Qt.NoModifier, )
QtCore.QCoreApplication.postEvent(child, event_release)
return
编辑:我也尝试了 QTest.mouseMove()...它实际上移动了鼠标光标...但是,我希望 Bot 在后台运行...我希望用户能够使用他的计算机当机器人运行时
【问题讨论】:
-
这能回答你的问题吗? How to test drag and drop behavior in PyQt?
-
不,QTest.mouseMove() 实际上会移动鼠标光标...我希望 Bot 在后台运行...我希望用户能够在 Bot 运行时使用他的计算机运行
标签: python python-3.x pyqt5 qtwebengine