您應該處理顯示像素圖的小部件的enter和leave事件。一種方法是在widget上安裝event filter,如下所示:
from PyQt4 import QtCore, QtGui
class Window(QtGui.QWidget):
def __init__(self):
super(Window, self).__init__()
self.pixmap1 = QtGui.QPixmap('image1.jpg')
self.pixmap2 = QtGui.QPixmap('image2.jpg')
self.label = QtGui.QLabel(self)
self.label.setPixmap(self.pixmap1)
self.label.installEventFilter(self)
layout = QtGui.QVBoxLayout(self)
layout.addWidget(self.label)
def eventFilter(self, widget, event):
if widget is self.label:
if event.type() == QtCore.QEvent.Enter:
self.label.setPixmap(self.pixmap2)
elif event.type() == QtCore.QEvent.Leave:
self.label.setPixmap(self.pixmap1)
return super(Window, self).eventFilter(widget, event)
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
window = Window()
window.setGeometry(500, 300, 200, 200)
window.show()
sys.exit(app.exec_())