6

Qt.SIGNALを使用してマウスリリースアクションをシミュレートするにはどうすればよいですか?ユーザーの操作なしでmouseReleaseをシミュレートする必要があります。前もって感謝します!

4

2 に答える 2

4

:のclicked信号を使用した例を次に示します。QPushButton

#!/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_())
于 2013-03-26T09:03:22.757 に答える
1

次を使用できます。

from PyQt4.QtTest import QTest

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

これにより、ウィジェットの中央でマウスが解放されます。

mousePress()、、などのメソッドもありますmouseClick()。ただし、Windowsでドラッグアンドドロップをテストしている場合は、ブロックされるため、同等のものQTest.mousePress()がブロックされることに注意してQDrag.exec_()ください。

于 2015-01-13T03:46:46.063 に答える