pyqt5 鼠标滑过按钮,按钮改变颜色,离开之后,按钮恢复原先颜色 完整代码
时间: 2023-06-27 21:01:21 浏览: 97
以下是一个可以实现鼠标滑过按钮改变颜色的 PyQt5 代码示例:
```python
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton
from PyQt5.QtGui import QColor, QPalette
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 创建按钮并设置颜色
self.button = QPushButton("Hover me!", self)
self.button.setGeometry(50, 50, 100, 50)
self.button.setStyleSheet("background-color: blue")
# 连接鼠标移入和移出事件
self.button.enterEvent = self.on_enter
self.button.leaveEvent = self.on_leave
def on_enter(self, event):
# 鼠标移入按钮时,设置按钮颜色为红色
palette = self.button.palette()
palette.setColor(QPalette.Button, QColor(255, 0, 0))
self.button.setPalette(palette)
self.button.setAutoFillBackground(True)
def on_leave(self, event):
# 鼠标移出按钮时,恢复按钮原先颜色
palette = self.button.palette()
palette.setColor(QPalette.Button, QColor(0, 0, 255))
self.button.setPalette(palette)
self.button.setAutoFillBackground(True)
if __name__ == '__main__':
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
```
运行代码后,移动鼠标到按钮上方,按钮会变成红色,移开鼠标,按钮会恢复成蓝色。请注意,这里使用了 `QPalette` 对象来设置按钮的颜色,而不是直接使用 `setStyleSheet` 方法。这是因为在鼠标移入和移出事件中,需要动态改变按钮的颜色,而 `setStyleSheet` 方法只能在初始化时设置样式。
阅读全文