文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

利用python实现全屏爱心雨怎么实现

2023-08-03 19:37

关注

本篇文章和大家了解一下利用python实现全屏爱心雨怎么实现。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

以下核心代码参考黑客帝国的界面的雨滴图和网友的爱心素材

一 音乐播放

def alarm():    # 初始化模    pygame.init()    pygame.mixer.init()    # 加载一个音乐    file = r'C:\Users\95853\PycharmProjects\contanctoracle\.mp3'    pygame.mixer.music.load(file)    pygame.mixer.music.play()    time.sleep(65)    # 播放65秒    pygame.mixer.music.stop() # 停止播放

二 爱心创建

def rainmake(canvas, imagefile):    rainlist = []    for i in range(20):        # 根据图片,创建一排心        rainlist.append(canvas.create_image(100 + 80 * i, INIT_HEIGHT, anchor=NE, image=imagefile))    return rainlist

三 爱心下落

ef raindown(tk, canvas, imagefile, sec):    # 线程间等待    time.sleep(sec)    rainlist = rainmake(canvas, imagefile)    # 每颗心的纵坐标值    height = [INIT_HEIGHT] * 20    while True:        # 每次移动前稍等一会        time.sleep(0.2)        # 20颗心一起移动        for i in range(20):            # 如果这颗心到底了,则不继续移动,否则height重置就无效了            if not height[i] == 0:                # 设置下落步调                rnd = random.randint(5, 50)                canvas.move(rainlist[i], 0, rnd)                height[i] = height[i] + rnd                tk.update()        for i, h in enumerate(height):            if h > 600:                # 当这颗心走到最下方,则删除                canvas.delete(rainlist[i])                tk.update()                # 清空这颗心的height                height[i] = 0                print(i, h, height)        # 20颗心全到底,则跳出循环        if height == [0] * 20:            print('break:', threading.current_thread().name)            break

四 展示表白语

def lookloop(tk, canvas, thread):    aliveflg = False    alarm()    while True:        # 5s检测一次        time.sleep(5)        for th in thread:            if th.is_alive():                aliveflg = True            else:                aliveflg = False        if aliveflg == False:            break    # Over    text = '雨停了,But.I Love You Too...'    # canvas.font = "bold 4000px Arial"    canvas.create_text(1050, 450, text=text, fill='red', anchor='e', font=('宋体', 40,))    canvas.pack()    time.sleep(10)    tk.destroy()

五 主函数创建窗口对象和开启多线程

def main():    # 创建窗口对象    tk = Tk()    tk.title('爱心之雨')    canvas_style = {        'bg': 'white',        'height': '1000',        'width': '1400',        'cursor': 'circle'    }    # 创建画布    canvas = Canvas(tk, canvas_style)    canvas.pack()    imagefile = PhotoImage(file="7777777.gif")    thread = []    for i in range(60):#60        thread.append(threading.Thread(target=raindown, args=(tk, canvas, imagefile, i)))    for t in thread:        t.start()    # 新开一个线程监控运行中的60个线程    threading.Thread(target=lookloop, args=(tk, canvas, thread)).start()

效果如下图:

动态爱心下落时,播放音乐,播完后展示一句表白话。

利用python实现全屏爱心雨怎么实现

以上就是利用python实现全屏爱心雨怎么实现的简略介绍,当然详细使用上面的不同还得要大家自己使用过才领会。如果想了解更多,欢迎关注编程网行业资讯频道哦!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯