使用pytqt5和python3语言,做一个七彩彩虹漩涡,彩虹动态旋转,点击关闭才会关闭动画
时间: 2024-03-09 08:49:48 浏览: 83
好的,这是一个比较简单的需求,可以使用PyQt5的QPainter和QTimer类来实现。以下是示例代码,可以让你开始实现:
```python
import sys
from PyQt5.QtCore import Qt, QTimer
from PyQt5.QtGui import QColor, QPainter
from PyQt5.QtWidgets import QApplication, QWidget
class RainbowWidget(QWidget):
def __init__(self):
super().__init__()
# 初始化变量
self.angle = 0
self.colors = [Qt.red, Qt.yellow, Qt.green, Qt.cyan, Qt.blue, Qt.magenta]
# 创建定时器
self.timer = QTimer(self)
self.timer.timeout.connect(self.update)
self.timer.start(50)
def paintEvent(self, event):
painter = QPainter(self)
painter.setRenderHint(QPainter.Antialiasing)
# 旋转坐标系
painter.translate(self.width() / 2, self.height() / 2)
painter.rotate(self.angle)
# 绘制彩虹
for i in range(6):
painter.setBrush(QColor(self.colors[i]))
painter.drawEllipse(-100 + i * 20, -100 + i * 20, 200 - i * 40, 200 - i * 40)
def keyPressEvent(self, event):
if event.key() == Qt.Key_Escape:
self.close()
def update_colors(self):
# 更新颜色
self.colors.append(self.colors.pop(0))
def update(self):
self.update_colors()
self.angle += 1
self.update()
if __name__ == '__main__':
app = QApplication(sys.argv)
widget = RainbowWidget()
widget.resize(400, 400)
widget.show()
sys.exit(app.exec_())
```
这个示例代码实现了一个七彩彩虹漩涡,彩虹动态旋转,并且可以通过 Esc 键关闭动画。你可以根据自己的需求对代码进行修改和优化。
阅读全文