首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模拟鼠标释放Pyqt

模拟鼠标释放Pyqt
EN

Stack Overflow用户
提问于 2013-03-26 09:12:50
回答 2查看 4.5K关注 0票数 6

如何使用Qt.SIGNAL模拟鼠标释放操作?我需要模拟一个没有用户交互的mouseRelease。提前感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-26 17:03:23

下面是一个使用QPushButtonclicked信号的示例

代码语言:javascript
复制
#!/usr/bin/env python
#-*- coding:utf-8 -*-

from PyQt4 import QtGui, QtCore

class MyWindow(QtGui.QWidget):
    def __init__(self, parent=None):
        super(MyWindow, self).__init__(parent)

        self.pushButtonSimulate = QtGui.QPushButton(self)
        self.pushButtonSimulate.setText("Simulate Mouse Release!")
        self.pushButtonSimulate.clicked.connect(self.on_pushButtonSimulate_clicked)

        self.layoutHorizontal = QtGui.QHBoxLayout(self)
        self.layoutHorizontal.addWidget(self.pushButtonSimulate)

    @QtCore.pyqtSlot()
    def on_pushButtonSimulate_clicked(self):
        mouseReleaseEvent = QtGui.QMouseEvent(
            QtCore.QEvent.MouseButtonRelease,
            self.cursor().pos(),
            QtCore.Qt.LeftButton,
            QtCore.Qt.LeftButton,
            QtCore.Qt.NoModifier,
        )

        QtCore.QCoreApplication.postEvent(self, mouseReleaseEvent)

    def mouseReleaseEvent(self, event):
        if event.button() == QtCore.Qt.LeftButton:
            print "Mouse Release"

        super(MyWindow, self).mouseReleaseEvent(event)

if __name__ == "__main__":
    import sys

    app = QtGui.QApplication(sys.argv)
    app.setApplicationName('MyWindow')

    main = MyWindow()
    main.show()

    sys.exit(app.exec_())
票数 4
EN

Stack Overflow用户

发布于 2015-01-13 11:46:46

您可以使用:

代码语言:javascript
复制
from PyQt4.QtTest import QTest

#(...) Where you want to release
QTest.mouseRelease(widget_to_release, Qt.LeftButton)

这将释放小部件中心的鼠标。

还有用于mousePress()mouseClick()等的方法。但是,如果你在Windows上测试拖放,要小心等效的QTest.mousePress()会阻塞,因为QDrag.exec_()会阻塞。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15627661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档