圣诞节快到了,用Python给好友做一个圣诞树小程序吧【保姆式教程】

马上圣诞节了,一个人的圣诞节可能会有些孤独,我来教你怎么用代码写一棵超级治愈的圣诞树。
话不多说,下面来看具体怎么实现吧!

文章目录

  • 前言
  • 一、使用工具
  • 二、画出圣诞树
    • 1.引入库
    • 2.加载音乐
    • 3.画图过程
  • 三、将py文件封装为exe文件
    • 1.安装pyInstaller库。
    • 2.制作自己想要的图标
      • 2.1 寻找图标
      • 2.2 格式转换
    • 3. py封装和换图标过程
      • 3.1 py封装
      • 3.2 换图标
  • 总结

前言

主要是使用的python语言,涉及到的库有turtle库以及pygame库,另外我是用的pyInstaller进行的exe转换。


一、使用工具

我是使用的Python3.6版本,Anaconda解释器和Pycharm的IDE。

二、画出圣诞树

1.引入库

代码如下:

import turtle
from turtle import *
import pygame

2.加载音乐

代码如下:

file = r'12.mp3'
# 初始化
pygame.mixer.init()
# 加载音乐文件
track = pygame.mixer.music.load(file)
# 开始播放音乐流
pygame.mixer.music.play()

该处我使用的是MP3文件的相对地址。

3.画图过程

代码如下:

setup(500, 500, startx=None, starty=None)
speed(0)
pencolor("pink")
pensize(10)
penup()
hideturtle()
goto(0, 150)
turtle.title(" 王哈哈收 !")
#此处自行修改
showturtle()
pendown()
shape(name="classic")
# 1
seth(-120)
for i in range(10):fd(12)right(2)
penup()
goto(0, 150)
seth(-60)
pendown()
for i in range(10):fd(12)left(2)
seth(-150)
penup()
fd(10)
pendown()
for i in range(5):fd(10)right(15)
seth(-150)
penup()
fd(8)
pendown()
for i in range(5):fd(10)right(15)
seth(-155)
penup()
fd(5)
pendown()
for i in range(5):fd(7)right(15)
# 2
penup()
goto(-55, 34)
pendown()
seth(-120)
for i in range(10):fd(8)right(5)penup()
goto(50, 35)
seth(-60)
pendown()
for i in range(10):fd(8)left(5)
seth(-120)
penup()
fd(10)
seth(-145)
pendown()
for i in range(5):fd(10)right(15)
penup()
fd(10)
seth(-145)
pendown()
for i in range(5):fd(12)right(15)
penup()
fd(8)
seth(-145)
pendown()
for i in range(5):fd(10)right(15)
penup()
seth(-155)
fd(8)
pendown()
for i in range(5):fd(11)right(15)
# 3
penup()
goto(-100, -40)
seth(-120)
pendown()
for i in range(10):fd(6)right(3)
penup()
goto(80, -39)
seth(-50)
pendown()
for i in range(10):fd(6)left(3)
seth(-155)
penup()
fd(10)
pendown()
for i in range(5):fd(8)right(10)
penup()
fd(8)
seth(-145)
pendown()
for i in range(7):fd(8)right(10)
penup()
fd(8)
seth(-145)
pendown()
for i in range(7):fd(7)right(10)
penup()
fd(8)
seth(-145)
pendown()
for i in range(7):fd(7)right(10)
penup()
fd(8)
seth(-140)
pendown()
for i in range(7):fd(6)right(10)# 4
penup()
goto(-120, -95)
seth(-130)
pendown()
for i in range(7):fd(10)right(5)
penup()
goto(100, -95)
seth(-50)
pendown()
for i in range(7):fd(10)left(5)
penup()
seth(-120)
fd(10)
seth(-155)
pendown()
for i in range(6):fd(8)right(10)
penup()
seth(-160)
fd(10)
seth(-155)
pendown()
for i in range(6):fd(8)right(10)
penup()
seth(-160)
fd(10)
seth(-155)
pendown()
for i in range(6):fd(8)right(10)
penup()
seth(-160)
fd(10)
seth(-160)
pendown()
for i in range(6):fd(8)right(10)
penup()
seth(-160)
fd(10)
seth(-160)
pendown()
for i in range(6):fd(8)right(10)
penup()
seth(-160)
fd(10)
seth(-165)
pendown()
for i in range(5):fd(10)right(11)
# 5
penup()
goto(-70, -165)
seth(-85)
pendown()
for i in range(3):fd(5)left(3)
penup()
goto(70, -165)
seth(-95)
pendown()
for i in range(3):fd(5)right(3)
seth(-170)
penup()
fd(10)
pendown()
pendown()
for i in range(10):fd(12)right(2)
# 6
penup()
goto(70, -165)
pendown()
seth(-90)
pensize(8)
pencolor("#de8891")
circle(-20, 90)penup()
goto(30, -185)
pendown()
seth(-180)
pensize(8)
pencolor("#de8891")
fd(40)penup()
goto(-5, -170)
pendown()
seth(-180)
pensize(8)
pencolor("#de8891")
fd(35)def guest(x, y, z):penup()goto(x, y)seth(-z)pendown()for angel in range(5):fd(10)right(10)def guet(x, y, z):penup()goto(x, y)seth(-z)pendown()for angel in range(5):fd(10)left(10)def qu(x, y, z):penup()goto(x, y)seth(-z)pendown()for angel in range(5):fd(6)right(10)seth(-150)fd(20)# 树枝
guest(-70, -150, 160)
guest(100, -150, 160)
guet(110, -110, 50)
guest(160, -140, 150)
qu(80, -120, 180)
guest(70, -85, 165)
guest(-40, -85, 165)
guet(90, -50, 50)
guest(130, -80, 150)
pencolor("pink")
qu(-40, -60, 180)
pencolor('#de8891')
qu(80, -30, 180)
pencolor("pink")
qu(40, 10, 180)
pencolor("#de8891")
guest(-60, 30, 120)
guest(-20, -20, 150)
guet(45, 40, 60)
guest(-30, 40, 170)
guest(-30, 110, 115)
guet(40, 90, 60)
guest(80, 50, 160)
pencolor("#de8891")def hdj(x, y):penup()goto(x, y)seth(80)pendown()pensize(2)circle(5)seth(10)fd(15)seth(120)fd(20)seth(240)fd(20)seth(180)fd(20)seth(-60)fd(20)seth(50)fd(20)seth(-40)fd(30)seth(-130)fd(5)seth(135)fd(30)seth(-60)fd(30)seth(-150)fd(6)seth(110)fd(30)def uit(x, y):penup()goto(x, y)pendown()pensize(2)circle(5)seth(-10)fd(15)seth(90)fd(15)seth(200)fd(15)seth(160)fd(15)seth(-90)fd(15)seth(10)fd(15)seth(-60)fd(20)seth(-180)fd(5)seth(110)fd(20)seth(-90)fd(20)seth(-180)fd(6)seth(70)fd(15)hideturtle()def yut(x, y, z):penup()goto(x, y)pendown()seth(z)for po in range(5):fd(4)left(36)def ytu(x, y, z):penup()goto(x, y)pendown()seth(z)for kk in range(5):fd(4)left(36)# 小蝴蝶结
seth(0)
uit(40, -160)
hdj(-80, -120)
yut(-67, -115, 120)
yut(-86, -123, 150)
hdj(40, -50)
yut(52, -45, 130)
yut(34, -55, 160)
seth(0)
uit(-20, -60)
ytu(-4, -60, 100)
ytu(-20, -60, 120)
hdj(-30, 20)
yut(-15, 25, 130)
yut(-40, 20, 180)
uit(30, 70)
ytu(45, 70, 100)
ytu(30, 70, 120)# 大蝴蝶结
pencolor("#de8891")
pensize(5)
penup()
seth(0)
goto(0, 150)
pendown()
circle(10)
seth(-15)
fd(40)
seth(90)
fd(40)
seth(200)
fd(40)
seth(160)
fd(40)
seth(-90)
fd(40)
seth(15)
fd(40)
seth(-70)
pencolor("#de8891")
pensize(4)
fd(40)
seth(-180)
fd(10)
seth(100)
fd(40)
seth(-100)
fd(40)
seth(-180)
fd(10)
seth(70)
fd(40)
penup()
seth(0)
goto(0, 130)
pencolor("pink")
pendown()def iou(x, y, z):penup()goto(x, y)pencolor("#de8891")pendown()seth(z)for po in range(10):fd(4)left(18)seth(0)
iou(35, 145, 100)
iou(-7, 145, 110)
pencolor("#de8891")
pensize(7)
penup()
goto(-35, 135)
pendown()# 圣诞帽
seth(-20)
pensize(2)
penup()
goto(-30, -120)
pencolor("black")
pendown()
fillcolor("red")
fd(30)
circle(4, 180)
fd(30)
circle(4, 180)
penup()
goto(-25, -115)
seth(75)
pendown()
begin_fill()
for i in range(5):fd(6)right(20)
seth(-10)
for i in range(5):fd(8)right(15)
seth(145)
for i in range(5):fd(5)left(2)
seth(90)
for i in range(5):fd(1)left(2)
seth(-90)
for i in range(4):fd(4)right(6)
seth(161)
fd(30)
end_fill()
pensize(1)
pencolor("black")def koc(x, y, size):pensize(2)pencolor("black")penup()goto(x, y)pendown()begin_fill()fillcolor("yellow")for i in range(5):left(72)fd(size)right(144)fd(size)end_fill()# 星星
seth(-15)
koc(-120, -70, 10)
seth(10)
koc(100, -20, 10)
seth(-10)
koc(10, 40, 10)
seth(30)
koc(-80, 60, 10)
koc(100, -150, 10)
koc(-140, -150, 10)
koc(20, 120, 10)# 袜子
seth(-20)
pensize(2)
penup()
goto(-20, 80)
pencolor("black")
pendown()
fillcolor("red")
fd(25)
circle(4, 180)
fd(25)
circle(4, 180)
penup()
goto(-15, 80)
pendown()
begin_fill()
fillcolor("#F08080")
seth(-120)
fd(20)
seth(150)
fd(5)
circle(7, 180)
fd(15)
circle(5, 90)
fd(30)
seth(160)
fd(18)
end_fill()
penup()
seth(0)
goto(100, -230)
pendown()
write("⭐Merry Christmas 王哈哈⭐", align="center", font=("Comic Sans MS", 12, "bold"))
#此处自行修改
done()

修改font参数来修改字体类型和字体大小


效果图


三、将py文件封装为exe文件

1.安装pyInstaller库。

2.制作自己想要的图标

2.1 寻找图标

一个好的矢量图标对于做软件是必不可少的,在这里我给大家推荐一个网站 阿里巴巴矢量图标库里面有各种各样的高清图标,大家注册后可以免费下载。

2.2 格式转换

总所周知,软件图标都是用的.ico文件,因此再完成步骤2.1后还需要对图片文件进行格式转换,在这里我再给大家推荐一个网站在线生成透明图标,网站不需注册,不收费,并且没有广告!

3. py封装和换图标过程

3.1 py封装


pyinstaller -F -w -i tree.ico write_tree.py #tree.ico为图标文件,write_tree.py为程序文件

运行成功后是这样的:


这个是生成的exe文件路径:

3.2 换图标

把exe文件剪切到桌面,一般会自动更新图标。如果没有的话,就剪切到其他盘多试几次。


效果如下图:

总结

教程到此已经做完了,大家赶快尝试一下吧。
如果对您有用的话还请点按,关注,收藏!!!

祝大家圣诞快乐!!!

圣诞节快到了,用Python给好友做一个圣诞树小程序吧【保姆式教程】相关推荐

  1. python制作超炫流星雨表白_做一个表白小程序

    双十一刚过,不知道你是不是和我一样是一个人来庆祝这个节日的.今年的双十一已经过去了,明年的双十一你是不是还是想一个人过 莫慌,我这里演示一个表白小程序. 程序的灵感来自于我曾经某天刷腾讯小视频,发现一 ...

  2. python初学者可以做的金融小程序-Python入门 —— 用pycharm写一个简单的小程序3...

    环境:Win10操作系统:Python3.7:Pycharm 题目来源:PTA 编程实例1:日期格式化 世界上不同国家有不同的写日期的习惯.比如美国人习惯写成"月-日-年",而中国 ...

  3. 100行Python代码,做一个打地鼠小游戏

    游戏画面 首先先进行游戏画面排版, class TopWindow(QWidget):def __init__(self, parent=None):super().__init__(parent)s ...

  4. 怎么做加减计算机程序vb,怎样使VB做一个加减乘除小程序,麻烦了,快点啊!!...

    繁华若梦 回答时间:2019-12-05 向TA提问 首先,创建两个文本框,命名为aTextbox和bTextbox 再创建一个文本框,命名为sumTextbox 再创建4个按钮,命名为 aButto ...

  5. python爱心代码_母亲节快到了,用Python给老妈写个祝福小程序吧~

    导 语 看到好多人留言问我咋好久没更新文章了,于是看了下上篇文章的发布日期,好吧确实挺久的,是该上线更一波文章了.想到母亲节快到了,不如就用Python给老妈写个祝福小程序吧~让我们愉快地开始吧~ 相 ...

  6. 《看聊天记录都学不会Python到游戏实战?太菜了吧》(8)我们开始做一个数字小游戏吧

    本系列文章将会以通俗易懂的对话方式进行教学,对话中将涵盖了新手在学习中的一般问题.此系列将会持续更新,包括别的语言以及实战都将使用对话的方式进行教学,基础编程语言教学适用于零基础小白,之后实战课程也将 ...

  7. 【课程设计】基于Taro+React+Springboot+TaroUI+Python爬虫的网络音乐播放小程序详细设计实现

    [课程设计]基于Taro+React+Springboot+TaroUI+Python爬虫的网络音乐播放小程序详细设计实现 解决触摸穿透 自定义导航栏 文章目录 项目简介 功能截图 1.用户登录注册 ...

  8. python socket能做什么_用python写一个聊天小程序!和女朋友的专属聊天工具!

    原标题:用python写一个聊天小程序!和女朋友的专属聊天工具! 1.UDP简介 Internet协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP).UDP为应用程序提供了无需建立就可 ...

  9. python+requests对app和微信小程序进行接口测试

    对于web端和app端的接口测试来说,他们都是通过请求方法,url和传递的body参数进行接口请求,区别web和app的区别就是header请求的不同.不同的地方在于header中的User-Agen ...

最新文章

  1. 黄聪:Ubuntu下使用低版g++编译器编译TSE
  2. 传说中的CAFEBABE到底在哪儿?
  3. C++重载(overload)和重写(覆盖)的区别?
  4. 我要人人都看到我,但不知道我是谁
  5. TCP三次握手,握的是啥?
  6. pvr波形是什么意思_PVR的完整形式是什么?
  7. Azure SQL性能调优实践
  8. 软件开发高手须掌握的4大SQL精髓语句(综合篇)
  9. Z-score标准化[转载]
  10. 利用Tampermonkey写脚本抢课
  11. win7显示安装程序正在启动服务器失败,Win7安装程序正在启动服务怎么办?
  12. apifox设置全局header
  13. css3,环绕圆环 loading,小组件
  14. 莫明其妙的死机现象,莫明其妙的重启
  15. 树莓派3B安装影音系统OSMC
  16. U盘中毒后怎么恢复数据
  17. oracle归档日志存储路径,oracle 归档日志路径三个参数DB_RECOVERY_FILE_DEST和LOG_ARCHIVE_DEST和LOG_ARCHIVE_DEST_n的关系...
  18. The Picture of Dorian Gray——17
  19. c语言对随机数进行快速排序,C语言自带快速排序对比插入排序
  20. 超高性价比 光纤互联解决方案良心推荐

热门文章

  1. 贾伟用“新设计思维”,构建洛客共享设计平台
  2. VirtualBox虚拟机网络配置
  3. ARCGIS属性数据的连接功能和关联功能
  4. spark mllib实现 广告点击率预测
  5. 微信小程序开发之布局奇盈绝技
  6. 即构SDK8月迭代:新增下行网络测速、切换房间、预览首帧回调等多项功能
  7. 记一次Git抽风现场
  8. 淘宝直播、淘宝直播技巧,打破店铺流量瓶颈!
  9. qt中的绝对路径和相对路径
  10. vue--实现Tabbar