使用pyqt绘制一个爱心!

使用pyqt绘制一个爱心!

介绍

  • 使用pyqt绘制一个爱心!

效果

代码

python 复制代码
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget
from PyQt5.QtGui import QPainter, QPen, QBrush, QColor
from PyQt5.QtCore import Qt, QPointF
import numpy as np

class HeartWidget(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('Heart Shape with PyQt5')
        self.setGeometry(100, 100, 800, 600)

    def paintEvent(self, event):
        painter = QPainter(self)
        painter.setRenderHint(QPainter.Antialiasing)

        # Generate heart shape coordinates
        t = np.linspace(0, 2 * np.pi, 1000)
        x = 16 * np.sin(t)**3
        y = -(13 * np.cos(t) - 5 * np.cos(2 * t) - 2 * np.cos(3 * t) - np.cos(4 * t))

        # Normalize coordinates
        x = (x - min(x)) / (max(x) - min(x)) * self.width()
        y = (y - min(y)) / (max(y) - min(y)) * self.height()

        # Set gradient colors
        colors = [QColor.fromHsvF(i / len(t), 1.0, 1.0) for i in range(len(t))]

        # Draw heart shape
        for i in range(len(t) - 1):
            painter.setPen(QPen(colors[i], 2))
            painter.drawLine(QPointF(x[i], y[i]), QPointF(x[i + 1], y[i + 1]))

        # Fill heart shape with gradient colors
        painter.setPen(Qt.NoPen)
        painter.setBrush(QBrush(Qt.SolidPattern))
        for i in range(len(t) - 1):
            painter.setBrush(QBrush(colors[i]))
            painter.drawPolygon(QPointF(x[i], y[i]), QPointF(x[i + 1], y[i + 1]), QPointF(self.width() / 2, self.height() / 2))

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('Heart Shape with PyQt5')
        self.setGeometry(100, 100, 800, 600)
        self.setCentralWidget(HeartWidget())

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())
相关推荐
AntBlack2 天前
不当韭菜V1.1 :增强能力 ,辅助构建自己的交易规则
后端·python·pyqt
前端市界2 天前
前端视角: PyQt6+Vue3 跨界开发实战
前端·qt·pyqt
AI大法师4 天前
Python:PyQt5 全栈开发教程,构建跨平台桌面应用
python·pyqt
宋大水13 天前
【大作业-12】草莓成熟度检测模型,YOLO+PyQt+MySQL
数据库·深度学习·mysql·yolo·目标检测·pyqt·课程设计
mortimer13 天前
Python GUI 应用启动优化实战:从3分钟到“秒开”的深度历程
python·github·pyqt
懷淰メ16 天前
日常--详细介绍qt Designer常用快捷键(详细图文)
开发语言·qt·pyqt·快捷键·qtdesigner·ui设计·qt设计师
钢铁男儿22 天前
PyQt事件处理机制深度指南:超越信号与槽的底层掌控
pyqt
Goona_23 天前
拒绝SQL恐惧:用Python+pyqt打造任意Excel数据库查询系统
数据库·python·sql·excel·pyqt
赤鸢QAQ1 个月前
Qt小组件 - 6 异步运行函数
开发语言·python·qt·pyqt
斟的是酒中桃1 个月前
基于YOLOv8的火灾智能检测系统设计与实现
人工智能·深度学习·yolo·pyqt