2021-12-17 用Python代码绘制带音乐的圣诞树
注,转自CSDN:
https://blog.csdn.net/weixin_51390582/article/details/121959033?utm_source=app&app_version=4.20.0&code=app_1562916241&uLinkId=usr1mkqgl919blen
源代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 | #导入需要用到的包,没有的话需要先安装 import turtle as t import random import pygame import threading import time import tkinter as tk file = r '薛之谦 - 迟迟.mp3' # 音乐的路径 pygame.mixer.init() # 初始化 track = pygame.mixer.music.load( file ) # 加载音乐文件 pygame.mixer.music.play() # 开始播放音乐 t.screensize(bg = 'black' ) # 定义背景颜色,可以自己换颜色 def loving_heart(r): l = 2 * r t.left( 45 ) t.forward(l) t.circle(r, 180 ) t.right( 90 ) t.circle(r, 180 ) t.forward(l) # 树函数(递归) def tree(d, s): if d < = 0 : return t.forward(s) tree(d - 1 , s * . 8 ) t.right( 120 ) tree(d - 3 , s * . 5 ) t.right( 120 ) tree(d - 3 , s * . 5 ) t.right( 120 ) t.backward(s) # 回退函数 # 画爱心部分 t.penup() t.goto( 0 , 200 ) # 设置起点位置 t.pendown() t.pencolor( 'red' ) # 设置画笔颜色 t.color( 'red' ) t.begin_fill() # 对图形进行填充 loving_heart( 20 ) # 执行画爱心函数 t.end_fill() # 画树部分 n = 100 t.speed( 0 ) # t.Turtle().screen.delay(0) t.right( 225 ) t.color( "dark green" ) t.backward(n * 4.8 ) tree( 15 , n) t.backward(n / 5 ) # 绘制落叶 for i in range ( 200 ): a = 200 - 400 * random.random() b = 10 - 20 * random.random() t.speed( 0 ) t.up() t.forward(b) t.left( 90 ) t.forward(a) t.down() if random.randint( 1 , 2 ) = = 1 : t.color( 'tomato' ) else : t.color( 'wheat' ) t.circle( 4 ) t.up() t.backward(a) t.right( 90 ) t.backward(b) # 绘制雪花 def drawsnow(): # 定义画雪花的方法 t.speed( 0 ) t.ht() # 隐藏笔头,ht=hideturtle t.pensize( 2 ) # 定义笔头大小 for i in range ( 200 ): # 画多少雪花 t.pencolor( "white" ) # 定义画笔颜色为白色,其实就是雪花为白色 t.pu() # 提笔,pu=penup t.setx(random.randint( - 350 , 350 )) # 定义x坐标,随机从-350到350之间选择 t.sety(random.randint( - 100 , 350 )) # 定义y坐标,注意雪花一般在地上不会落下,所以不会从太小的纵座轴开始 t.pd() # 落笔,pd=pendown dens = 6 # 雪花瓣数设为6 snowsize = random.randint( 1 , 10 ) # 定义雪花大小 for j in range (dens): # 就是6,那就是画5次,也就是一个雪花五角星 # t.forward(int(snowsize)) #int()取整数 t.fd( int (snowsize)) t.backward( int (snowsize)) # t.bd(int(snowsize)) #注意没有bd=backward,但有fd=forward,小bug t.right( int ( 360 / dens)) # 转动角度 drawsnow() # 写下署名 t.color( "red" ) # 填充颜色 t.up() # 抬笔 t.goto( 170 , - 200 ) t.down() # 落笔 t.write( "Created:是Dream呀" , font = ( "宋体" , 18 , "normal" )) t.ht() # t.done() t.hideturtle() time.sleep( 2 ) # 弹窗制作 def dow(): window = tk.Tk() width = window.winfo_screenwidth() height = window.winfo_screenheight() a = random.randrange( 0 , width) b = random.randrange( 0 , height) window.title( '圣诞节快乐' ) window.geometry( "200x50" + "+" + str (a) + "+" + str (b)) tk.Label(window, text = '圣诞节快乐!' , # 标签的文字 bg = 'pink' , # 背景颜色 font = ( '..' , 17 ), # 字体和字体大小 width = 18 , height = 2 # 标签长宽 ).pack() # 固定窗口位置 window.mainloop() threads = [] for i in range ( 100 ): # 需要的弹框数量 t = threading.Thread(target = dow) threads.append(t) time.sleep( 0.01 ) threads[i].start() |
本文来自博客园,作者:{admin-xiaoli},转载请注明原文链接:{https://www.cnblogs.com/crackerroot}
【推荐】FlashTable:表单开发界的极速跑车,让你的开发效率一路狂飙
【推荐】Flutter适配HarmonyOS 5知识地图,实战解析+高频避坑指南
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步