あなたは、マウスは、あなたがこのようなものを使用することができますウィジェットに入るか、離れたときを追跡したい場合:
#!/usr/bin/env python
#-*- coding:utf-8 -*-
from PyQt4 import QtCore, QtGui
class mainwindow(QtGui.QWidget):
def __init__(self, parent=None):
super(mainwindow, self).__init__(parent)
def enterEvent(self, event):
print "Mouse Entered"
return super(mainwindow, self).enterEvent(event)
def leaveEvent(self, event):
print "Mouse Left"
return super(mainwindow, self).enterEvent(event)
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
main = mainwindow()
main.show()
sys.exit(app.exec_())
あなただけのマウスがウィジェットの上にあるかどうかを確認したい場合は、あなたが使用することができますQWidget::underMouse()
機能:
#!/usr/bin/env python
#-*- coding:utf-8 -*-
from PyQt4 import QtCore, QtGui
class mainwindow(QtGui.QWidget):
def __init__(self, parent=None):
super(mainwindow, self).__init__(parent)
self.button = QtGui.QPushButton("Check Mouse in 3 seconds")
self.button.clicked.connect(self.on_button_clicked)
self.layout = QtGui.QHBoxLayout(self)
self.layout.addWidget(self.button)
def mouseReleaseEvent(self, event):
if self.underMouse():
print "Do something"
return super(mainwindow, self).mouseReleaseEvent(event)
@QtCore.pyqtSlot()
def on_button_clicked(self):
QtCore.QTimer.singleShot(3000, self.checkMouse)
def checkMouse(self):
print "Under Mouse: {0}".format(self.underMouse())
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
main = mainwindow()
main.show()
sys.exit(app.exec_())
もう一つの方法は、マウスの位置がウィジェットの内部形状内にあるかどうかをチェックする伴うだろう:
#!/usr/bin/env python
#-*- coding:utf-8 -*-
from PyQt4 import QtCore, QtGui
class mainwindow(QtGui.QWidget):
def __init__(self, parent=None):
super(mainwindow, self).__init__(parent)
self.setMouseTracking(True)
def mouseReleaseEvent(self, event):
posMouse = event.pos()
if self.rect().contains(posMouse):
print "Under Mouse"
return super(mainwindow, self).mouseReleaseEvent(event)
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
main = mainwindow()
main.show()
main.resize(200, 200)
sys.exit(app.exec_())
あなたは、理想的にはあなたの問題を示して完全なサンプルで、いくつかのより多くのコードを提供することができますか?ウィジェットのイベントメソッドをオーバーライドすると、マウスをつかんでいなければ、それらは 'this'ウィジェットに対して暗黙的に呼び出されます。 –
こんにちはアンドレアス。ウィジェットをクリックした場合は、マウスを押し下げたまま、マウスを離したときに** this **から離れた別のウィジェットにカーソルをドラッグすると、mouseReleaseEventは引き続きトリガーされます。私はカーソルがウィジェットの上にある場合、リリース時に知っておく必要があります。これどうやってするの? – Phil