注,轉自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()
