2016/10/20(木) [n年前の日記]
#1 [python] PySideのWidgetに入ったり出たりする時のイベント
enterEvent() や leaveEvent() を書けば、Widget内にマウスカーソルが入ったり出たりした時に処理ができるらしい。
_enterevent_test1.py

たしかに処理されてる。ように見える。
アレ? このスクリーンショットだと反映されてるように見えないな…。ちょっと変なタイミングでキャプチャしてしまったようで。まあいいや。こういう感じの画面が出るスクリプトだよ、ぐらいは伝わるだろう…。
_enterevent_test1.py
"""
PySideのWidget内にマウスカーソルが出たり入ったりした時のイベント動作を確認
Windows10 x64 + Python 2.7.11 + PySide
"""
import sys
from PySide.QtCore import *
from PySide.QtGui import *
class MyLabel(QLabel):
def __init__(self, *argv, **keywords):
super(MyLabel, self).__init__(*argv, **keywords)
self.setFrameStyle(QFrame.Box | QFrame.Raised)
self.setFixedSize(240, 64)
self.enterCount = 0
self.leaveCount = 0
def enterEvent(self, event):
self.enterCount += 1
self.setText("enterEvent %d" % self.enterCount)
def leaveEvent(self, event):
self.leaveCount += 1
self.setText("leaveEvent %d" % self.leaveCount)
class MyWidget(QWidget):
def __init__(self, *argv, **keywords):
super(MyWidget, self).__init__(*argv, **keywords)
layout = QVBoxLayout(self)
layout.addWidget(MyLabel("Please move mouse cursor"))
layout.addWidget(MyLabel("Please move mouse cursor"))
layout.addWidget(MyLabel("Please move mouse cursor"))
self.setLayout(layout)
def main():
app = QApplication(sys.argv)
w = MyWidget()
w.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()

たしかに処理されてる。ように見える。
アレ? このスクリーンショットだと反映されてるように見えないな…。ちょっと変なタイミングでキャプチャしてしまったようで。まあいいや。こういう感じの画面が出るスクリプトだよ、ぐらいは伝わるだろう…。
[ ツッコむ ]
以上です。