J'ai la fenêtre suivante avec des cadres.Comment faire une mise en évidence de qframe lorsque le curseur est sur PyQt4?
Je souhaite que le cadre soit en surbrillance (dans mon cas, changez de forme) lorsque la souris se trouve dans sa zone.
from PyQt4 import QtGui, QtCore
import sys
app = QtGui.QApplication(sys.argv)
window = QtGui.QWidget()
window_layout = QtGui.QVBoxLayout()
window.setLayout(window_layout)
#fill content
for i in range(10):
label = QtGui.QLabel(str(i))
frame = QtGui.QFrame()
frame_layout = QtGui.QVBoxLayout()
frame.setLayout(frame_layout)
frame_layout.addWidget(label)
window_layout.addWidget(frame)
def layout_widgets(layout):
return (layout.itemAt(i) for i in range(layout.count()))
def mouse_enter(event):
print 'frame enter'
w.widget().setFrameShape(3)
def mouse_leave(event):
print 'frame leave'
w.widget().setFrameShape(0)
for w in layout_widgets(window_layout):
print w.widget()
w.widget().enterEvent = mouse_enter
w.widget().leaveEvent = mouse_leave
window.show()
sys.exit(app.exec_())
Cela fonctionne mais seule la dernière image de mise en page est mise en surbrillance. Comment faire que seul ce cadre change sa forme là où se trouve la souris?
J'ai essayé ce qui suit:
def mouse_enter(event, frame):
print 'frame enter'
frame.setFrameShape(3)
w.widget().enterEvent = functools.partial(mouse_enter, w.widget())
mais il donne une erreur. J'ai trouvé une autre façon de le faire - signal mapper mais je n'ai aucune idée de comment l'utiliser.
qui est parfait, merci beaucoup – eodj