pyqt5用setStyleSheet设置按钮点击后抖动效果
时间: 2024-02-16 13:00:14 浏览: 88
用pyqt5 给按钮设置图标和css样式的方法
如果你想使用`setStyleSheet`方法来实现按钮点击后的抖动效果,可以使用CSS3中的`animation`属性来实现动画效果。
以下是一个示例代码:
```python
from PyQt5.QtCore import QTimer
from PyQt5.QtGui import QPalette, QColor
from PyQt5.QtWidgets import QApplication, QPushButton, QWidget
class MyButton(QPushButton):
def __init__(self, *args, **kwargs):
super(MyButton, self).__init__(*args, **kwargs)
self.clicked.connect(self.animate)
def animate(self):
self.setStyleSheet("""
QPushButton:hover {{
background-color: #FFF;
color: #000;
animation: shake 0.5s;
animation-iteration-count: 1;
}}
@keyframes shake {{
0% {{ transform: translate(0, 0); }}
10% {{ transform: translate(-5px, 0); }}
20% {{ transform: translate(5px, -5px); }}
30% {{ transform: translate(-5px, 5px); }}
40% {{ transform: translate(5px, 0); }}
50% {{ transform: translate(0, -5px); }}
60% {{ transform: translate(-5px, 0); }}
70% {{ transform: translate(5px, 5px); }}
80% {{ transform: translate(-5px, 5px); }}
90% {{ transform: translate(5px, 0); }}
100% {{ transform: translate(0, 0); }}
}}
""")
class MainWindow(QWidget):
def __init__(self):
super(MainWindow, self).__init__()
self.button = MyButton("Click me", self)
self.button.setGeometry(50, 50, 100, 50)
self.show()
if __name__ == "__main__":
app = QApplication([])
palette = QPalette()
palette.setColor(QPalette.Button, QColor(255, 0, 0))
app.setPalette(palette)
window = MainWindow()
app.exec_()
```
在这个示例中,我们自定义了一个MyButton类,它继承自QPushButton类,并重写了`animate`方法。在这个方法中,我们使用`setStyleSheet`方法来设置按钮的样式表,实现了背景颜色、字体颜色和动画效果。动画效果使用了CSS3中的`animation`属性,并定义了一个名为`shake`的动画,通过改变按钮的`transform`属性来实现抖动效果。
注意,这个示例代码同样使用了QPalette来设置应用程序的主题色。如果你想使用不同的颜色,可以自行修改。
阅读全文