我有下面的带边框的窗户。在
我希望当鼠标在其区域内时,框架被突出显示(在我的例子中,改变它的形状)。在
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_())
它可以工作,但只高亮显示布局中的最后一帧。 如何使鼠标所在的位置只改变帧的形状?在
我试过以下方法:
^{pr2}$但它给出了一个错误。我找到了另一种方法-信号映射器 但我不知道如何使用它。在
代码中的问题是,在执行for时变量w保留在最后一个元素中,因此它只在后一个元素中执行。为了解决这个问题,我实现了一个从}函数。在
QFrame
继承的Frame类,其中我覆盖了enterEvent
和{相关问题 更多 >
编程相关推荐