千家信息网

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

发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,今天就跟大家聊聊有关Python打造虎年祝福神器的示例代码怎么写,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。python是什么Python是
千家信息网最后更新 2025年01月19日Python打造虎年祝福神器的示例代码怎么写

今天就跟大家聊聊有关Python打造虎年祝福神器的示例代码怎么写,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

python是什么

Python是一种跨平台的、具有解释性、编译性、互动性和面向对象的脚本语言,其最初的设计是用于编写自动化脚本,随着版本的不断更新和新功能的添加,常用于用于开发独立的项目和大型项目。

    背景故事

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


    对呀,我何不用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 turtleimport timeimport randomimport tkinter as tkimport 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,1def 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,3if __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 turtleimport timeimport randomimport tkinter as tkimport 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,1def 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,3if __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打造虎年祝福神器的示例代码怎么写有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

    0