pyqt5 QCalendar 鼠标悬停效果
时间: 2024-09-19 18:17:32 浏览: 66
PyQt5中的QCalendar是一个用于显示日历视图的控件,它可以方便地集成到应用程序中。对于鼠标悬停效果,你可以通过连接`QCalendarWidget`的`hovered()`信号并处理该信号,在用户鼠标悬停在特定日期上时响应相应的事件。
以下是一个简单的示例,展示如何在鼠标悬停时更改字体颜色:
```python
from PyQt5.QtWidgets import QApplication, QWidget, QCalendarWidget
from PyQt5.QtGui import QColor
class CalendarApp(QWidget):
def __init__(self):
super().__init__()
self.calendar = QCalendarWidget()
self.calendar.currentDateChanged.connect(self.on_date_changed)
# 设置默认样式
self.calendar.cellClicked.connect(self.highlight_date)
# 添加鼠标悬停事件处理器
self.calendar.cellMouseMoved.connect(self.handle_hover)
def on_date_changed(self, current_date):
# 当日期改变时,取消当前高亮
self.highlight_date(current_date)
def highlight_date(self, date):
cell = self.calendar.itemAt(date.toJulianDay(), Qt.Horizontal)
if cell:
cell.setForeground(QColor('blue')) # 改变前景色为蓝色表示高亮
def handle_hover(self, date):
cell = self.calendar.itemAt(date.toJulianDay(), Qt.Horizontal)
if cell:
if cell.foregroundRole() == Qt.NoRole: # 如果已经是默认颜色,则更改
cell.setForeground(QColor('red')) # 将前景色改为红色
else: # 否则恢复原颜色
cell.setForeground(QColor()) # 清除颜色以移除高亮
if __name__ == '__main__':
app = QApplication([])
window = CalendarApp()
window.show()
app.exec_()
```
在这个例子中,当鼠标悬停在日历上的某个日期时,会将该日期的前景色更改为红色;移开鼠标时,如果之前设置了高亮,颜色会被清除。你可以根据需要修改颜色或添加其他自定义行为。
阅读全文