教你用Tkinter+多线程制作一个520表白程序~

简介: 大家好,我是志斌~每逢过节的时候,志斌都要绞尽脑汁想送给女朋友什么礼物,从而让她有一个与众不同的节日惊喜。这不今天520嘛,志斌尝试用Python给女朋友写了一个表白小程序!

大家好,我是志斌~


每逢过节的时候,志斌都要绞尽脑汁想送给女朋友什么礼物,从而让她有一个与众不同的节日惊喜。这不今天520嘛,志斌尝试用Python给女朋友写了一个表白小程序!


下面志斌就带大家来领略一下用Python表白的方式,让女朋友们感受一下学Python的人的浪漫。

01创建窗口


创建窗口我们使用的是Tkinter模块,Tkinter 是 Python 的标准 GUI 库,Python 使用 Tkinter 可以快速的创建 GUI 应用程序。单个窗口的代码如下:


import tkinter as tk
window = tk.Tk()
window.title('520快乐')
window.geometry("400x100" + "+" +str(20) + "+" + str(20))   #调整窗口大小
tk.Label(window,
        text='520快乐!',  # 窗口文字内容
        bg='pink',  # 窗口背景颜色
        font=('微软雅黑', 20),  # 字体和字体大小
        width=90, height=80# 窗口背景颜色长宽
        ).pack()  # 固定窗口位置
window.mainloop()


效果如下:


23.png


02满屏展示


仅仅展示一个页面也太过于简单了,怎么能够体现出我们对女朋友的感情呢!


我们可以通过使用Threading和Time这两个库,让窗口可以在屏幕中多个运行,代码如下:

import threading
import time
threads = []
for i in range(520):  # 需要的弹框数量
   shuliang = threading.Thread(target=biaobai)
   threads.append(shuliang)
   time.sleep(0.3)   #弹框出现的时间间隔
   threads[i].start()


让我们来看看效果:



24.gif


我们发现,这个窗口只在这一个地方展示,并没有做到全屏随机展示,所以我们要给它加上一个随机展示,代码如下:


import random
width = window.winfo_screenwidth()
height = window.winfo_screenheight()
a = random.randrange(0, width)
b = random.randrange(0, height)



让我们来看看最终效果:


25.gif


03打包程序


我们现在是在自己电脑上运行的,但是在女朋友的电脑上可能并没有Python的运行环境,所以我们要将程序打包好,然后发给女朋友让她使用。


首先要安装pyinstaller库,命令如下:

pip install PyInstaller


打包命令:

pyinstaller -F py文件路径;


打包成功后,可以在生成的dist文件夹下寻找生成的exe。



如果有读者对本文程序感兴趣,在「志斌的Python笔记」后台回复“520” ,即可获取该程序!有需要源码的读者点击下方「在看」,即可找志斌领取源码哟~


相关文章
|
21天前
|
Java 开发者
如何通过易语言多线程提升程序响应速度
如何通过易语言多线程提升程序响应速度
123 62
|
14天前
|
Java 开发者
如何通过易语言多线程提升程序响应速度?
如何通过易语言多线程提升程序响应速度?
|
5月前
|
分布式计算 并行计算 安全
在Python Web开发中,Python的全局解释器锁(Global Interpreter Lock,简称GIL)是一个核心概念,它直接影响了Python程序在多线程环境下的执行效率和性能表现
【6月更文挑战第30天】Python的GIL是CPython中的全局锁,限制了多线程并行执行,尤其是在多核CPU上。GIL确保同一时间仅有一个线程执行Python字节码,导致CPU密集型任务时多线程无法充分利用多核,反而可能因上下文切换降低性能。然而,I/O密集型任务仍能受益于线程交替执行。为利用多核,开发者常选择多进程、异步IO或使用不受GIL限制的Python实现。在Web开发中,理解GIL对于优化并发性能至关重要。
60 0
|
20天前
|
监控 Java API
|
3月前
|
Rust 并行计算 安全
揭秘Rust并发奇技!线程与消息传递背后的秘密,让程序性能飙升的终极奥义!
【8月更文挑战第31天】Rust 以其安全性和高性能著称,其并发模型在现代软件开发中至关重要。通过 `std::thread` 模块,Rust 支持高效的线程管理和数据共享,同时确保内存和线程安全。本文探讨 Rust 的线程与消息传递机制,并通过示例代码展示其应用。例如,使用 `Mutex` 实现线程同步,通过通道(channel)实现线程间安全通信。Rust 的并发模型结合了线程和消息传递的优势,确保了高效且安全的并行执行,适用于高性能和高并发场景。
55 0
|
3月前
|
开发框架 Android开发 iOS开发
跨平台开发的双重奏:Xamarin在不同规模项目中的实战表现与成功故事解析
【8月更文挑战第31天】在移动应用开发领域,选择合适的开发框架至关重要。Xamarin作为一款基于.NET的跨平台解决方案,凭借其独特的代码共享和快速迭代能力,赢得了广泛青睐。本文通过两个案例对比展示Xamarin的优势:一是初创公司利用Xamarin.Forms快速开发出适用于Android和iOS的应用;二是大型企业借助Xamarin实现高性能的原生应用体验及稳定的后端支持。无论是资源有限的小型企业还是需求复杂的大公司,Xamarin均能提供高效灵活的解决方案,彰显其在跨平台开发领域的强大实力。
42 0
|
3月前
|
Java 调度
|
3月前
|
安全 C# 开发者
【C# 多线程编程陷阱揭秘】:小心!那些让你的程序瞬间崩溃的多线程数据同步异常问题,看完这篇你就能轻松应对!
【8月更文挑战第18天】多线程编程对现代软件开发至关重要,特别是在追求高性能和响应性方面。然而,它也带来了数据同步异常等挑战。本文通过一个简单的计数器示例展示了当多个线程无序地访问共享资源时可能出现的问题,并介绍了如何使用 `lock` 语句来确保线程安全。此外,还提到了其他同步工具如 `Monitor` 和 `Semaphore`,帮助开发者实现更高效的数据同步策略,以达到既保证数据一致性又维持良好性能的目标。
42 0
|
3月前
|
安全 Java API
揭秘Java并发编程的神秘面纱:线程安全与性能优化之间的微妙舞蹈,如何让你的程序在多核时代中翱翔!
【8月更文挑战第12天】随着多核处理器的普及,Java并发编程越发重要。线程安全确保多线程环境下的程序一致性,而性能优化则让程序高效运行。通过同步机制如`synchronized`关键字或`ReentrantLock`接口,我们可以实现线程安全,如在银行账户存款操作中限制并发访问。然而,过度同步会导致性能下降,因此采用细粒度锁和利用Java并发工具类(如`ConcurrentHashMap`)可提高程序的并发能力。理解这些概念并加以实践,是每个Java开发者提升技能的关键。
45 0