效果图
代码如下
import turtle as t
import random
import pygame
import threading
import time
import tkinter as tkt.screensize(bg='black') # 定义背景颜色,可以自己换颜色def loving_heart(r):l = 2 * rt.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:returnt.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)t.color("dark red", "red") # 定义字体颜色t.write("Merry Christmas!", align="center", font=("Comic Sans MS", 40, "bold")) # 定义文字、位置、字体、大小# 绘制雪花
def drawsnow(): # 定义画雪花的方法t.speed(0)t.ht() # 隐藏笔头,ht=hideturtlet.pensize(2) # 定义笔头大小for i in range(200): # 画多少雪花t.pencolor("white") # 定义画笔颜色为白色,其实就是雪花为白色t.pu() # 提笔,pu=penupt.setx(random.randint(-350, 350)) # 定义x坐标,随机从-350到350之间选择t.sety(random.randint(-100, 350)) # 定义y坐标,注意雪花一般在地上不会落下,所以不会从太小的纵座轴开始t.pd() # 落笔,pd=pendowndens = 6 # 雪花瓣数设为6snowsize = 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,小bugt.right(int(360 / dens)) # 转动角度
drawsnow()
# 写下署名
t.color("red") # 填充颜色
t.up() # 抬笔
t.goto(170,-200)
t.down() # 落笔
t.write('Created BY LWH', font=("Bradley Hand ITC", 30, "bold"))
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()