Python表白比心

news2025/1/8 6:04:38

本文介绍运用Python中的turtle库控制函数画比心图。
  

文章目录

    • 一、效果展示
    • 二、代码详解
      • 1 导入库
      • 2 播放音乐
      • 3 画手
      • 4 定义画心的函数
      • 5 定义写名字的函数并实现动态画心

  

一、效果展示

  
在介绍代码之前,先来看下本文的实现效果。

可以参考Pinstaller(Python打包为exe文件)一文把Python文件转化成exe,发给未安装Python的Ta。

  
  

二、代码详解

  
Python绘制比心图的原理是:应用turtle库控制函数绘制不同曲线构成比心图。
  

1 导入库

  
首先导入本文需要加载的库,如果你有些库还没有安装,导致运行代码时报错,可以在Anaconda Prompt中用pip方法安装。

# -*- coding: UTF-8 -*-
'''
代码用途 :画比心手
作者     :阿黎逸阳
博客     :  https://blog.csdn.net/qq_32532663/article/details/106176609
'''
import os
import pygame
import turtle as t 
from time import sleep

本文应用到的库较少,只应用了os、pygame、turtle和time四个库。
  
os库可以设置文件读取的位置。
  
pygame库是为了绘制过程更有趣,在绘图过程中添加了背景音乐。
  
turtle库是绘图库,相当于给你一支画笔,你可以在画布上用数学逻辑控制的代码完成绘图。
  
time库可以设置程序休眠的时间,达到动态画心的效果。

  
  

2 播放音乐

  
接着应用pygame库播放背景音乐,本文的音乐是《赵海洋 - 《瞬间的永恒》夜色钢琴曲》。

#播放音乐
print('播放音乐')
pygame.mixer.init()
pygame.mixer.music.load(r"F:\公众号\520\赵海洋 - 《瞬间的永恒》夜色钢琴曲.mp3") 
pygame.mixer.music.set_volume(0.5) 
pygame.mixer.music.play(1, 10)

这一部分的代码和整体代码是剥离的,可以选泽在最开始放上该代码,也可以直接删除。如果选择播放音乐,需要在代码music.load函数中把你想放音乐的电脑本地存放地址填进去。有部分朋友对这一块有疑问,填充格式可参考如下图片:

在这里插入图片描述

  
  

3 画手

  
然后设置画板的大小,并画手。

#画图
print('画图')
t.title('阿黎逸阳的代码公众号')
t.speed(1)
#t.screensize(1000, 800)
t.setup(startx=0, starty = 0, width=800, height = 600)
#第一根手指头
print('画第一跟手指头')
t.penup()
t.goto(0, 60)
t.pendown()
t.color('black')
t.pensize(2)
t.setheading(30)
t.circle(-200, 30)
t.circle(-8, 120)
t.setheading(205)
t.circle(-300, 12)
t.left(10)
t.forward(45)
#画第二条线
print('画第二条线')
t.penup()
t.goto(18, 13)
t.pendown()
t.setheading(20)
t.forward(50)
#画第三条线
print('画第三条线')
t.penup()
t.goto(18, -15)
t.pendown()
t.setheading(20)
t.forward(50)
#画第四条线
print('画第四条线')
t.penup()
t.goto(22, -36)
t.pendown()
t.setheading(10)
t.circle(90, 26)
#画第二根手指的弧线
print('画第二根手指的弧线')
t.penup()
t.goto(55, 55)
t.pendown()
t.setheading(-20)
t.circle(-25, 85)
#画第三根手指的弧线
print('画第三根手指的弧线')
t.penup()
t.goto(62, 30)
t.pendown()
t.setheading(-10)
t.circle(-20, 120)
#画第四根手指弧线
print('画第四根手指的弧线')
t.penup()
t.goto(64, 2)
t.pendown()
t.setheading(-10)
t.circle(-20, 120)
t.right(5)
t.forward(20)
t.right(10)
t.circle(-10, 80)
t.setheading(78)
t.circle(-50, 30)
t.penup()
t.goto(57, -25)
t.pendown()
t.setheading(-50)
t.forward(10)
#手的下弧度
print('画手的下弧线')
t.penup()
t.goto(22, -36)
t.pendown()
t.setheading(270)
t.circle(-30, 80)
t.forward(10)
t.setheading(240)
t.forward(40)
#手的上弧度
print('画第手的上弧线')
t.penup()
t.goto(0, 60)
t.pendown()
t.setheading(190)
t.circle(150, 20)
t.setheading(225)
t.forward(10)
t.setheading(265)
t.forward(80)
t.setheading(230)
t.forward(60)
#画大拇指
print('画大拇指')
t.penup()
t.goto(8, 63)
t.pendown()
t.setheading(95)
t.circle(-80, 30)
t.circle(-10, 180)
t.left(20)
t.forward(20)
#画指甲
print('画指甲')
t.penup()
t.goto(84, 85)
t.pendown()
t.color('black', 'red')
t.begin_fill()
t.setheading(18)
t.circle(-50, 20)
t.setheading(270)
t.circle(-10, 170)
t.end_fill()

关键代码详解:
  
t.pensize(width):设置画笔的尺寸。
  
t.color(color):设置画笔的颜色。
  
t.penup():抬起画笔,一般用于另起一个地方绘图使用。
  
t.goto(x,y):画笔去到某个位置,参数为(x,y),对应去到的横坐标和纵坐标。
  
t.pendown():放下画笔,一般和penup组合使用。
  
t.left(degree):画笔向左转多少度,括号里表示度数。
  
t.right(degree):画笔向右转多少度,括号里表示度数。
  
t.circle(radius,extent,steps):radius指半径,若为正,半径在小乌龟左侧radius远的地方,若为负,半径在小乌龟右侧radius远的地方;extent指弧度;steps指阶数。
  
画手的关键是:通过调节circle函数中的半径和弧度来调节曲线的弧度,从而使得手的轮廓比较流畅。

  
  

4 定义画心的函数

  
接着定义画心的函数。

def heart_bit():
    #画爱心
    print('画爱心')
    t.penup()
    t.goto(70, 135)
    t.pendown()
    t.color('black', 'red')
    t.begin_fill()
    t.setheading(90)
    t.circle(10, 180)
    t.left(30)
    t.forward(30)
    t.setheading(30)
    t.forward(30)
    t.left(38)
    t.circle(12, 188)
    t.end_fill()

  
  

5 定义写名字的函数并实现动态画心

  
最后定义写名字的函数并实现动态画心。

def write_name(x, y, size, ss):
    t.hideturtle()
    t.penup()
    t.goto(x, y)
    t.pendown()
    t.pencolor('black')
    t.write(ss, font=('Times New Roman', size, 'normal'))
while 1:
    t.speed(10)
    print('写名字')
    write_name(5, 125, 12, '杨紫')
    write_name(5, 125, 12, '杨紫')
    heart_bit()
    sleep(1)
    t.undo()
    t.undo()
    t.undo()
    t.undo()
    t.undo()
    t.undo()
    t.undo()
    t.undo()
    t.undo()
    t.undo()
    t.undo()
    t.undo()
    t.undo()
    t.undo()
    t.undo()
    t.undo()
    t.undo()
    t.undo()
    t.undo()
    t.undo()
    t.undo()
    t.undo()
    t.undo()

注:如需全量直接可运行的代码和背景音乐,可在公众号中回复”比心“即可免费获取。
  
至此,在Python中实现比心的绘制逻辑已大致讲解完毕,替换名字送给你喜欢的Ta吧。

  
你可能感兴趣:
用Python绘制皮卡丘
用Python绘制词云图
用Python绘制520永恒心动
Python人脸识别—我的眼里只有你
Python画好看的星空图(唯美的背景)
【Python】情人节表白烟花(带声音和文字)
用Python中的py2neo库操作neo4j,搭建关联图谱
Python浪漫表白源码合集(爱心、玫瑰花、照片墙、星空下的告白)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/21764.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]java毕业设计网上手机商城的设计与实现

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

JS,DOM试题2,在实践中应用,非常详细!!

列表收缩 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title><style>ul,li{list-style: none;padding: 0;margin: 0;}ul{display: none;}h3{margin: 0;background: cornflowerblue;}div{text-indent: 20…

基于FFmpeg的Java视频Mp4转GIF初探

背景 在一些业务场景中&#xff0c;会有如下的一些要求&#xff1a;比如有用户需要将Mp4视频转为Gif动图。当然有一些小伙伴说可以使用系统截图&#xff0c;然后使用之前提到过的技术&#xff1a;GIF图像动态生成-JAVA后台生成。需要处理的素材比较少&#xff0c;就一两个视频&…

最全Python操作excel代码,让你每天早下班两小时

在数字化时代&#xff0c;很多人工作中经常和excel打交道。本文介绍Python操作excel的脚本&#xff0c;让你工作效率更高。    文章目录一、安装openpyxl模块二、加载库三、创建文件和工作表四、在工作表指定单元格写数据五、设置单元格的颜色字体六、在excel中写入表格一、安…

【数据结构初阶】C语言从0到1带你了解直接插入排序

&#x1f31f;hello&#xff0c;各位读者大大们你们好呀&#x1f31f; &#x1f36d;&#x1f36d;系列专栏&#xff1a;【数据结构初阶】 ✒️✒️本篇内容&#xff1a;深入剖析直接插入排序 &#x1f6a2;&#x1f6a2;作者简介&#xff1a;计算机海洋的新进船长一枚&#xf…

等保整改之开启Nacos认证-漏扫发现我们使用Nacos时存在未授权访问的漏洞

背景 还是之前的一个小项目&#xff0c;部署在专网中&#xff0c;等保在做了一次漏扫后&#xff0c;说是有个高危漏洞要求整改。打开漏洞扫描报告后&#xff0c;总体网络风险级别为&#xff1a;比较危险&#xff1a; nacos未授权访问漏洞 &#xff0c;漏洞详细信息如下&#x…

Linux基本用户操作

1.查看用户名 指令&#xff1a;whoami 在Linux下查看本用户下的用户名&#xff0c;可以在普通用户和root超级用户下操作&#xff0c;如下&#xff1a; 其实&#xff0c;查看用户名也可以不用指令就能查看&#xff1a; 箭头所指的就是用户名&#xff0c;root用户名就是root。 2.…

第2章 持久化初始数据到指定表

004 AuthorityScopeEnum、Role、Topic、TaskInfoDto、TasksQz AuthorityScopeEnum&#xff1a;该枚举定义了6种当前程序的访问权限&#xff0c;前程序通过该枚举实例选定其中(NONE(-1&#xff1a;无任何权限)/Custom(1&#xff1a;自定义权限)/MyDepart(2&#xff1a;本部门权…

Typescript:(一)基本使用

TypeScript 定义&#xff1a;Typescript是拥有类型的JavaScript超集 它可以编译成普通&#xff0c;干净&#xff0c;完整的JavaScript代码 我们可以将TypeScript理解成加强版的JavaScript。 JavaScript所拥有的特性&#xff0c;TypeScript全部都是支持的&#xff0c;并且它紧…

Linux系统挂载命令mount(U盘、移动硬盘、光盘)

Linux系统不像windows系统可以自动识别加载新设备&#xff0c;Linux系统需要手动识别&#xff0c;手动加载。Linux中一切皆文件。文件通过一个很大的文件树来组织&#xff0c;文件树的根目录是&#xff1a;/&#xff0c;从根目开始录逐级展开。这些文件通过若干设备铺展开。 命…

BCG 对话框表格控件CBCGPGridCtrl显示子

1、1、MFC窗口中拖放Picture Control 2、 void CSimpleGridSampleDlg::_FillGrid() { CWaitCursor wait; // Create grid tree: CRect rectClient; GetClientRect(rectClient); m_wndGrid.Create(WS_CHILD | WS_VISIBLE, rectClient, this, ID_GRID); m_wndGri…

SAR回波的多普勒特性

专栏目录链接: SAR成像专栏目录 今天我们来看看SAR回波的多普勒特性。 首先推导下正侧视下SAR回波的多普勒频率公式,前提条件: 正侧视不考虑平台运动的不稳定性忽略地球曲率忽略地球自转的影响 根据多普勒效应原理可得SAR回波的多普勒频率(可以回顾下:《雷达导论PART IV.…

C++之二叉搜索树详解

文章目录前言一、二叉搜索树的概念二、二叉搜索树的操作1.节点类2.二叉搜索树类内部定义3.遍历操作4.构造函数5.拷贝构造函数6.赋值运算符重载7.析构函数8.插入函数非递归实现递归实现9.删除函数非递归实现递归实现10.查找函数非递归实现递归实现三、二叉搜索树的应用K模型KV模…

索引和事务

文章目录 1.索引的含义以及应用 2.索引的查看、创建 3.带主键的索引底层结构 4.事务的含义 5.事务的特性 6.JDBC 一.索引的含义及应用 1.索引我们可以认为是文章的目录&#xff0c;有了它&#xff0c;我们可以更加快速的 查看到我们想要查找的内容。 2.并不是说我们加了索引&…

一周侃 | 周末随笔及推荐

前言 每周一次的闲聊胡侃又来啦&#xff01;这一周世界发生了许多大事&#xff0c;从举世瞩目的中美元首会晤到新的防疫政策二十条出来之后各地防疫政策的转变&#xff0c;再到俄乌冲突持续进行&#xff0c;联大通过俄罗斯赔偿计划……百年未有之大变局正加速演进&#xff0c;…

【k8s】8、service详解

文章目录一、Service详解1、Service介绍1.1 userspace模式1.2 iptables 模式1.3 ipvs模式2、Service类型3、Service使用3.1 实现环境准备3.2 Cluster类型的Service3.2.1 cluster类型的生成ip3.2.2 cluster类型不生成ip3.3 NodePort类型的service3.4 LoadBalancer类型的Service3…

【MySQL】MySQL体系结构与内部组件工作原理解析(原理篇)(MySQL专栏启动)

&#x1f4eb;作者简介&#xff1a;小明java问道之路&#xff0c;专注于研究 Java/ Liunx内核/ C及汇编/计算机底层原理/源码&#xff0c;就职于大型金融公司后端高级工程师&#xff0c;擅长交易领域的高安全/可用/并发/性能的架构设计与演进、系统优化与稳定性建设。 &#x1…

GEE两行代码下载任意范围影像python API

GEE三行代码下载任意范围影像 前不久&#xff0c;吴秋生博士更新了geemap&#xff0c;现在能更方便地下载影像了最新的下载再也不受有限的Google Drive、图像过大会自动分割、缓慢的下载速度影响了。 有兴趣的同学可以see this: https://geemap.org/notebooks/118_download_i…

蓝牙传输 LE Audio技术

蓝牙 蓝牙(Bluetooth)技术&#xff0c;实际上是一种短距离无线电技术&#xff0c;利用"蓝牙"技术&#xff0c;能够有效地简化掌上电脑、笔记本电脑和移动电话手机等移动通信终端设备之间的通信&#xff0c;也能够成功地简化以上这些设备与因特网Internet之间的通信&…

react(受控组件、生命周期、使用脚手架)

目录 使用脚手架 其他&#xff1a; 学习js: mdn 文档 MDN Web Docs 在react官方文档的 CDN 链接里下载最新的react版本react官网&#xff1a;React 官方中文文档 – 用于构建用户界面的 JavaScript 库 BootCDN - Bootstrap 中文网开源项目免费 CDN 加速服务 1. 受控组件…