信息发布→ 登录 注册 退出

Python打造虎年祝福神器的示例代码

发布时间:2026-01-11

点击量:
目录
  • 背景故事
  • 一、Python Turtle模块画小老虎
    • 1. 定义库以及初始化界面
    • 2. 画出左右两只耳朵
    • 3. 画出小老虎头部轮廓
    • 4. 画出老虎的两只眼睛
    • 5. 画出老虎的鼻子和嘴巴
    • 6. 画出小老虎的左右肢体和脚趾
    • 7. 在需要的位置写上我们的新年祝福
  • 二、弹窗设置
    • 三、倒计时页面设计
      • 1. 实现清屏功能以及初始化位置
      • 2. 显示倒数3,2,1
      • 3. 显示我们需要的文字
      • 4. 设定代码运行入口,调用目标函数
    • 结果展示
      • 源码分享

        背景故事

        2025虎年将至,值此新春佳节之际,各大社区更是你争我赶纷纷发起春节征文活动正当我一筹莫展之际,几位粉丝朋友们的小请求点醒了我:

        对呀,我何不用Python画一个老虎出来呢,加之增添几个功能,打造成一款虎年祝福神器!我瞬间灵感爆发,话不多说,先看成品:
        首先是刚打开时的倒数界面,神秘感十足:

        倒数结束后,来到我们的展示环节:

        最后,是我们的成果,一直可爱的小老虎以及满屏的弹窗祝福:

        制作过程

        一、Python Turtle模块画小老虎

        在这里,我们使用了Python中的一个非常好玩的库:Turtle,也就是我们常说的海龟画图!不懂的同学可以自行参考学习这篇文章,在这里不做过多的讲解:海龟画图全解–值得你一看!

        1. 定义库以及初始化界面

        def laohu():
            import turtle as t
            # 设置幕布大小及颜色
            t.screensize(50, 50, bg='yellow')
            t.title("老虎宝宝")
            t.shape("classic")
            t.pensize(10)
            t.color("orange")
            t.fillcolor("pink")
            t.speed(100)
            t.hideturtle()
        

        2. 画出左右两只耳朵

        # 左耳
            t.penup()
            t.goto(-105, 97)
            t.setheading(160)
            t.begin_fill()
            t.pendown()
            t.circle(-30, 230)
            t.setheading(180)
            t.circle(37, 90)
            t.end_fill()
            # 右耳
            t.penup()
            t.goto(105, 97)
            t.setheading(20)
            t.begin_fill()
            t.pendown()
            t.circle(30, 230)
            t.setheading(0)
            t.circle(-37, 90)
            t.end_fill()
        

        3. 画出小老虎头部轮廓

        # 头部轮廓
            t.penup()
            t.goto(-67, 140)
            t.setheading(30)
            t.pendown()
            t.circle(-134, 60)
        
            t.penup()
            t.goto(-50, -25)
            t.setheading(180)
            t.pendown()
            t.circle(-100, 30)
            t.circle(-30, 90)
            t.setheading(100)
            t.circle(-200, 20)
        
            t.penup()
            t.goto(50, -25)
            t.setheading(0)
            t.pendown()
            t.circle(100, 30)
            t.circle(30, 90)
            t.setheading(80)
            t.circle(200, 20)

        4. 画出老虎的两只眼睛

         # 两虎眼
            # 左眼
            t.penup()
            t.goto(-90, 25)
            t.setheading(-45)
            t.fillcolor("orange")
            t.begin_fill()
            t.pendown()
            # 椭圆绘制技巧
            a = 0.2
            for i in range(120):
                if 0 <= i < 30 or 60 <= i < 90:
                    a = a + 0.1
                    t.lt(3)  # 向左转3度
                    t.fd(a)  # 向前走a的步长
                else:
                    a = a - 0.1
                    t.lt(3)
                    t.fd(a)
            t.end_fill()
        
            t.fillcolor("pink")
            t.penup()
            t.goto(-53, 43)
            t.setheading(0)
            t.begin_fill()
            t.pendown()
            t.circle(19, 360)
            t.end_fill()
        
            t.penup()
            t.pensize(4)
            t.goto(-60, 57)
            t.setheading(30)
            t.pendown()
            t.circle(-12, 60)
            # 右眼
            t.penup()
            t.goto(90, 25)
            t.setheading(45)
            t.pensize(2)
            t.fillcolor("orange")
            t.begin_fill()
            t.pendown()
            # 椭圆绘制技巧
            a = 0.2
            for i in range(120):
                if 0 <= i < 30 or 60 <= i < 90:
                    a = a + 0.1
                    t.lt(3)  # 向左转3度
                    t.fd(a)  # 向前走a的步长
                else:
                    a = a - 0.1
                    t.lt(3)
                    t.fd(a)
            t.end_fill()
        
            t.fillcolor("pink")
            t.penup()
            t.goto(53, 43)
            t.setheading(0)
            t.begin_fill()
            t.pendown()
            t.circle(13, 360)
            t.end_fill()
        
            t.penup()
            t.pensize(4)
            t.goto(60, 57)
            t.setheading(150)
            t.pendown()
            t.circle(12, 60)

        5. 画出老虎的鼻子和嘴巴

        # 鼻子和嘴吧
            t.penup()
            t.goto(-16, 20)
            t.setheading(-90)
            t.fillcolor("pink")
            t.begin_fill()
            t.pendown()
            a = 0.2
            for i in range(120):
                if 0 <= i < 30 or 60 <= i < 90:
                    a = a + 0.03
                    t.lt(3)
                    t.fd(a)
                else:
                    a = a - 0.03
                    t.lt(3)
                    t.fd(a)
            t.end_fill()
        
            t.penup()
            t.goto(-24, 0)
            t.setheading(-60)
            t.pendown()
            t.circle(28, 120)

        6. 画出小老虎的左右肢体和脚趾

         # 小老虎肢体
            # 左肢
            t.color("orange")
            t.penup()
            t.goto(-65, -24)
            t.setheading(-140)
            t.begin_fill()
            t.pendown()
            t.circle(100, 40)
            t.setheading(180)
            t.circle(30, 40)
            t.setheading(-40)
            t.circle(40, 40)
            t.setheading(-150)
            a = 0.5
            for i in range(120):
                if 0 <= i < 30 or 60 <= i < 90:
                    a = a + 0.05
                    t.lt(3)  # 向左转3度
                    t.fd(a)  # 向前走a的步长
                elif 30 <= i < 60 or 90 <= i < 100:
                    a = a - 0.05
                    t.lt(3)
                    t.fd(a)
            t.setheading(93)
            t.circle(-150, 30)
            t.end_fill()
        
            t.penup()
            t.goto(-85, -115)
            t.setheading(-150)
            t.color("pink", "pink")
            t.begin_fill()
            t.pendown()
            a = 0.3
            for i in range(120):
                if 0 <= i < 30 or 60 <= i < 90:
                    a = a + 0.03
                    t.lt(3)  # 向左转3度
                    t.fd(a)  # 向前走a的步长
                else:
                    a = a - 0.03
                    t.lt(3)
                    t.fd(a)
            t.end_fill()
        
            # 每个脚趾绘制函数
        
            def toe(x, y):
                t.begin_fill()
                t.goto(x, y)
                t.circle(3, 360)
                t.end_fill()
        
            t.penup()
            toe(-98, -120)
            toe(-96, -110)
            toe(-88, -105)
            toe(-80, -105)
        
            # 右肢
            t.color("orange")
            t.penup()
            t.goto(65, -24)
            t.setheading(-40)
            t.begin_fill()
            t.pendown()
            t.circle(-100, 40)
            t.setheading(0)
            t.circle(-30, 40)
            t.setheading(-140)
            t.circle(-40, 40)
            t.setheading(-30)
            a = 0.5
            for i in range(120):
                if 0 <= i < 30 or 60 <= i < 90:
                    a = a + 0.05
                    t.rt(3)  # 向左转3度
                    t.fd(a)  # 向前走a的步长
                elif 30 <= i < 60 or 90 <= i < 100:
                    a = a - 0.05
                    t.rt(3)
                    t.fd(a)
            t.setheading(87)
            t.circle(150, 30)
            t.end_fill()
        
            t.penup()
            t.goto(85, -115)
            t.setheading(150)
            t.color("pink", "pink")
            t.begin_fill()
            t.pendown()
            a = 0.3
            for i in range(120):
                if 0 <= i < 30 or 60 <= i < 90:
                    a = a + 0.03
                    t.lt(3)  # 向左转3度
                    t.fd(a)  # 向前走a的步长
                else:
                    a = a - 0.03
                    t.lt(3)
                    t.fd(a)
            t.end_fill()
        
            t.penup()
            toe(98, -120)
            toe(96, -110)
            toe(88, -105)
            toe(80, -105)

        7. 在需要的位置写上我们的新年祝福

        t.goto(-57, -140)
            t.color("orange")
            t.setheading(-20)
            t.pendown()
            t.circle(165, 40)
            t.penup()
            t.goto(0, 180)
            t.write("祝大家虎年快乐,虎虎生威!",
                    align="center", font=("Times", 28, "bold"))
        
            t.color("black")
            t.penup()
            t.goto(0, 80)
            t.write("王",
                    align="center", font=("Times", 38, "bold"))
            t.penup()
            t.goto(0, -5)
            t.write("一                   一",
                    align="center", font=("Times", 18, "bold"))
            t.goto(0, -15)
            t.write("一                   一",
                    align="center", font=("Times", 18, "bold"))
            t.goto(0, -25)
            t.write("一                   一",
                    align="center", font=("Times", 18, "bold"))

        看到这,我们的小老虎部分就已经大功告成了,大家可以先欣赏一下我们的小老虎:

        二、弹窗设置

        在必要处修改我们的数据就可以啦,大家以后都可以拿这个去用!

        # 弹窗设置
        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='red',  # 背景颜色
                     font=('..', 17),  # 字体和字体大小
                     width=18, height=2  # 标签长宽
                     ).pack()  # 固定窗口位置
            window.mainloop()
        

        三、倒计时页面设计

        1. 实现清屏功能以及初始化位置

        import turtle
        import time
        import random
        import tkinter as tk
        import threading
        # 实现清屏
        def clear_screen():
            turtle.screensize(50, 50, bg='yellow')
            turtle.penup()             #画笔抬起
            turtle.goto(0,0)        #定位到(0,0)
            turtle.color('white')
            turtle.pensize(800)         #画笔粗细
            turtle.pendown()           #画笔落下
            turtle.setheading(0)        #设置朝向
            turtle.fd(300)       #前进
            turtle.bk(600)      #后退
        
        # 初始化海龟的位置
        def go_start(x, y, state):
            turtle.pendown() if state else turtle.penup()
            turtle.goto(x, y)
            #画线,state为真时海龟回到原点,为假时不回到原来的出发点
        def draw_line(length, angle, state):
            turtle.pensize(1)
            turtle.pendown()
            turtle.setheading(angle)
            turtle.fd(length)
            turtle.bk(length) if state else turtle.penup()
            turtle.penup()

        2. 显示倒数3,2,1

        #显示倒数3,2,1
        def draw_0(i):
            turtle.screensize(50, 50, bg='yellow')
            turtle.speed(0)
            turtle.penup()
            turtle.hideturtle()  # 隐藏箭头显示
            turtle.goto(-50, -100)
            turtle.color('red')
            write = turtle.write(i, font=('宋体', 200, 'normal'))
            time.sleep(1)

        3. 显示我们需要的文字

        # 显示文字
        def draw_1():
            turtle.penup()
            turtle.hideturtle()    #隐藏箭头显示
            turtle.goto(-410, 0)
            turtle.color('red')
            write = turtle.write('叮咚~新年礼物到啦', font=('宋体', 60, 'normal'))
            time.sleep(2)
        

        4. 设定代码运行入口,调用目标函数

        number=[3,2,1]    #储存显示界面倒数数字1,2,3
        if __name__ == '__main__':
            turtle.setup(900, 500)     #调画布的尺寸
            for i in number:
                turtle.screensize(50, 50, bg='yellow')
                draw_0(i)
                clear_screen()
            turtle.screensize(50, 50, bg='yellow')
            draw_1()
            clear_screen()
            turtle.screensize(50, 50, bg='yellow')
            laohu()
            time.sleep(5)
            threads = []
            for i in range(100):  # 需要的弹框数量
                t = threading.Thread(target=dow)
                threads.append(t)
                time.sleep(0.01)
                threads[i].start()
        

        结果展示

        最后就是我们的结果啦,快去试试吧!

        源码分享

        import turtle
        import time
        import random
        import tkinter as tk
        import threading
        # 实现清屏
        def clear_screen():
            turtle.screensize(50, 50, bg='yellow')
            turtle.penup()             #画笔抬起
            turtle.goto(0,0)        #定位到(0,0)
            turtle.color('white')
            turtle.pensize(800)         #画笔粗细
            turtle.pendown()           #画笔落下
            turtle.setheading(0)        #设置朝向
            turtle.fd(300)       #前进
            turtle.bk(600)      #后退
        
        # 初始化海龟的位置
        def go_start(x, y, state):
            turtle.pendown() if state else turtle.penup()
            turtle.goto(x, y)
        
        #画线,state为真时海龟回到原点,为假时不回到原来的出发点
        def draw_line(length, angle, state):
            turtle.pensize(1)
            turtle.pendown()
            turtle.setheading(angle)
            turtle.fd(length)
            turtle.bk(length) if state else turtle.penup()
            turtle.penup()
        
        #显示倒数3,2,1
        def draw_0(i):
            turtle.screensize(50, 50, bg='yellow')
            turtle.speed(0)
            turtle.penup()
            turtle.hideturtle()  # 隐藏箭头显示
            turtle.goto(-50, -100)
            turtle.color('red')
            write = turtle.write(i, font=('宋体', 200, 'normal'))
            time.sleep(1)
        
        # 显示文字
        def draw_1():
            turtle.penup()
            turtle.hideturtle()    #隐藏箭头显示
            turtle.goto(-410, 0)
            turtle.color('red')
            write = turtle.write('叮咚~新年礼物到啦', font=('宋体', 60, 'normal'))
            time.sleep(2)
        
        def laohu():
            import turtle as t
            # 设置幕布大小及颜色
            t.screensize(50, 50, bg='yellow')
            t.title("老虎宝宝")
            t.shape("classic")
            t.pensize(10)
            t.color("orange")
            t.fillcolor("pink")
            t.speed(100)
            t.hideturtle()
            # 左耳
            t.penup()
            t.goto(-105, 97)
            t.setheading(160)
            t.begin_fill()
            t.pendown()
            t.circle(-30, 230)
            t.setheading(180)
            t.circle(37, 90)
            t.end_fill()
            # 右耳
            t.penup()
            t.goto(105, 97)
            t.setheading(20)
            t.begin_fill()
            t.pendown()
            t.circle(30, 230)
            t.setheading(0)
            t.circle(-37, 90)
            t.end_fill()
            # 头部轮廓
            t.penup()
            t.goto(-67, 140)
            t.setheading(30)
            t.pendown()
            t.circle(-134, 60)
        
            t.penup()
            t.goto(-50, -25)
            t.setheading(180)
            t.pendown()
            t.circle(-100, 30)
            t.circle(-30, 90)
            t.setheading(100)
            t.circle(-200, 20)
        
            t.penup()
            t.goto(50, -25)
            t.setheading(0)
            t.pendown()
            t.circle(100, 30)
            t.circle(30, 90)
            t.setheading(80)
            t.circle(200, 20)
        
            # 两虎眼
            # 左眼
            t.penup()
            t.goto(-90, 25)
            t.setheading(-45)
            t.fillcolor("orange")
            t.begin_fill()
            t.pendown()
            # 椭圆绘制技巧
            a = 0.2
            for i in range(120):
                if 0 <= i < 30 or 60 <= i < 90:
                    a = a + 0.1
                    t.lt(3)  # 向左转3度
                    t.fd(a)  # 向前走a的步长
                else:
                    a = a - 0.1
                    t.lt(3)
                    t.fd(a)
            t.end_fill()
        
            t.fillcolor("pink")
            t.penup()
            t.goto(-53, 43)
            t.setheading(0)
            t.begin_fill()
            t.pendown()
            t.circle(19, 360)
            t.end_fill()
        
            t.penup()
            t.pensize(4)
            t.goto(-60, 57)
            t.setheading(30)
            t.pendown()
            t.circle(-12, 60)
            # 右眼
            t.penup()
            t.goto(90, 25)
            t.setheading(45)
            t.pensize(2)
            t.fillcolor("orange")
            t.begin_fill()
            t.pendown()
            # 椭圆绘制技巧
            a = 0.2
            for i in range(120):
                if 0 <= i < 30 or 60 <= i < 90:
                    a = a + 0.1
                    t.lt(3)  # 向左转3度
                    t.fd(a)  # 向前走a的步长
                else:
                    a = a - 0.1
                    t.lt(3)
                    t.fd(a)
            t.end_fill()
        
            t.fillcolor("pink")
            t.penup()
            t.goto(53, 43)
            t.setheading(0)
            t.begin_fill()
            t.pendown()
            t.circle(13, 360)
            t.end_fill()
        
            t.penup()
            t.pensize(4)
            t.goto(60, 57)
            t.setheading(150)
            t.pendown()
            t.circle(12, 60)
        
            # 鼻子和嘴吧
            t.penup()
            t.goto(-16, 20)
            t.setheading(-90)
            t.fillcolor("pink")
            t.begin_fill()
            t.pendown()
            a = 0.2
            for i in range(120):
                if 0 <= i < 30 or 60 <= i < 90:
                    a = a + 0.03
                    t.lt(3)
                    t.fd(a)
                else:
                    a = a - 0.03
                    t.lt(3)
                    t.fd(a)
            t.end_fill()
        
            t.penup()
            t.goto(-24, 0)
            t.setheading(-60)
            t.pendown()
            t.circle(28, 120)
        
            # 小老虎肢体
            # 左肢
            t.color("orange")
            t.penup()
            t.goto(-65, -24)
            t.setheading(-140)
            t.begin_fill()
            t.pendown()
            t.circle(100, 40)
            t.setheading(180)
            t.circle(30, 40)
            t.setheading(-40)
            t.circle(40, 40)
            t.setheading(-150)
            a = 0.5
            for i in range(120):
                if 0 <= i < 30 or 60 <= i < 90:
                    a = a + 0.05
                    t.lt(3)  # 向左转3度
                    t.fd(a)  # 向前走a的步长
                elif 30 <= i < 60 or 90 <= i < 100:
                    a = a - 0.05
                    t.lt(3)
                    t.fd(a)
            t.setheading(93)
            t.circle(-150, 30)
            t.end_fill()
        
            t.penup()
            t.goto(-85, -115)
            t.setheading(-150)
            t.color("pink", "pink")
            t.begin_fill()
            t.pendown()
            a = 0.3
            for i in range(120):
                if 0 <= i < 30 or 60 <= i < 90:
                    a = a + 0.03
                    t.lt(3)  # 向左转3度
                    t.fd(a)  # 向前走a的步长
                else:
                    a = a - 0.03
                    t.lt(3)
                    t.fd(a)
            t.end_fill()
        
            # 每个脚趾绘制函数
        
            def toe(x, y):
                t.begin_fill()
                t.goto(x, y)
                t.circle(3, 360)
                t.end_fill()
        
            t.penup()
            toe(-98, -120)
            toe(-96, -110)
            toe(-88, -105)
            toe(-80, -105)
        
            # 右肢
            t.color("orange")
            t.penup()
            t.goto(65, -24)
            t.setheading(-40)
            t.begin_fill()
            t.pendown()
            t.circle(-100, 40)
            t.setheading(0)
            t.circle(-30, 40)
            t.setheading(-140)
            t.circle(-40, 40)
            t.setheading(-30)
            a = 0.5
            for i in range(120):
                if 0 <= i < 30 or 60 <= i < 90:
                    a = a + 0.05
                    t.rt(3)  # 向左转3度
                    t.fd(a)  # 向前走a的步长
                elif 30 <= i < 60 or 90 <= i < 100:
                    a = a - 0.05
                    t.rt(3)
                    t.fd(a)
            t.setheading(87)
            t.circle(150, 30)
            t.end_fill()
        
            t.penup()
            t.goto(85, -115)
            t.setheading(150)
            t.color("pink", "pink")
            t.begin_fill()
            t.pendown()
            a = 0.3
            for i in range(120):
                if 0 <= i < 30 or 60 <= i < 90:
                    a = a + 0.03
                    t.lt(3)  # 向左转3度
                    t.fd(a)  # 向前走a的步长
                else:
                    a = a - 0.03
                    t.lt(3)
                    t.fd(a)
            t.end_fill()
        
            t.penup()
            toe(98, -120)
            toe(96, -110)
            toe(88, -105)
            toe(80, -105)
        
            t.goto(-57, -140)
            t.color("orange")
            t.setheading(-20)
            t.pendown()
            t.circle(165, 40)
            t.penup()
            t.goto(0, 180)
            t.write("祝大家虎年快乐,虎虎生威!",
                    align="center", font=("Times", 28, "bold"))
        
            t.color("black")
            t.penup()
            t.goto(0, 80)
            t.write("王",
                    align="center", font=("Times", 38, "bold"))
            t.penup()
            t.goto(0, -5)
            t.write("一                   一",
                    align="center", font=("Times", 18, "bold"))
            t.goto(0, -15)
            t.write("一                   一",
                    align="center", font=("Times", 18, "bold"))
            t.goto(0, -25)
            t.write("一                   一",
                    align="center", font=("Times", 18, "bold"))
        # 弹窗设置
        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='red',  # 背景颜色
                     font=('..', 17),  # 字体和字体大小
                     width=18, height=2  # 标签长宽
                     ).pack()  # 固定窗口位置
            window.mainloop()
        
        number=[3,2,1]    #储存显示界面倒数数字1,2,3
        if __name__ == '__main__':
            turtle.setup(900, 500)     #调画布的尺寸
            for i in number:
                turtle.screensize(50, 50, bg='yellow')
                draw_0(i)
                clear_screen()
            turtle.screensize(50, 50, bg='yellow')
            draw_1()
            clear_screen()
            turtle.screensize(50, 50, bg='yellow')
            laohu()
            time.sleep(5)
            threads = []
            for i in range(100):  # 需要的弹框数量
                t = threading.Thread(target=dow)
                threads.append(t)
                time.sleep(0.01)
                threads[i].start()

        以上就是Python打造虎年祝福神器的示例代码的详细内容,更多关于Python祝福神器的资料请关注其它相关文章!

        在线客服
        服务热线

        服务热线

        4008888355

        微信咨询
        二维码
        返回顶部
        ×二维码

        截屏,微信识别二维码

        打开微信

        微信号已复制,请打开微信添加咨询详情!