注,轉自CSDN:
https://blog.csdn.net/weixin_51390582/article/details/121959033?utm_source=app&app_version=4.20.0&code=app_1562916241&uLinkId=usr1mkqgl919blen
源代碼:
#導入需要用到的包,沒有的話需要先安裝 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()