欢迎光临UUpython
最大、最新、最全的Python代码收集站

七夕表白弹窗

代码创建了一个使用 tkinter 和 threading 的 Python 脚本,用于在屏幕上弹出一些带有“亲爱的嫁给我吧!”文本的窗口。每个窗口都会在屏幕上的随机位置显示。

这段代码中,定义了一个 dow 函数来创建并显示弹出窗口,然后使用 threading 模块创建了一系列线程来同时执行 dow 函数,从而实现了多个弹出窗口同时出现的效果。

不过,有一些问题需要注意:

  1. 界面更新问题tkinter 应该在主线程中使用,但在多个线程中使用了 tkinter 的部分。这可能会导致界面更新问题,可能会造成程序的不稳定性。
  2. 资源管理问题:在循环中创建大量的线程和窗口可能会占用大量的系统资源,特别是当同时创建大量窗口时,可能会导致程序崩溃或系统性能下降。
  3. Sleep 时间:在创建线程之前使用 time.sleep(0.1) 可能会导致线程之间的时间差不固定,从而影响到窗口的弹出顺序。
  4. 窗口关闭问题:由于每个窗口都是由独立线程创建的,可能会出现关闭窗口时的问题。需要确保在关闭窗口时正确处理资源释放。
import tkinter as tk
import random
import threading
import time
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('520快乐')
    window.geometry("200x50"+"+"+str(a)+"+"+str(b))
    tk.Label(window,
        text='亲爱的嫁给我吧!',    # 标签的文字
        bg='Red',     # 背景颜色
        font=('楷体', 15),     # 字体和字体大小
        width=15, height=2  # 标签长宽
        ).pack()    # 固定窗口位置
    window.mainloop()
  
threads = []
for i in range(100):#需要的弹框数量
    t = threading.Thread(target=dow)
    threads.append(t)
    time.sleep(0.1)
    threads[i].start()

当涉及到在 Tkinter 中创建多线程时,确保只有主线程(也就是 Tkinter 事件循环)与 GUI 元素进行交互,其他线程则执行独立于 GUI 的操作。以下是修正后的代码,解决了之前提到的问题:

import tkinter as tk
import random
import threading
import time

def show_window():
    width = root.winfo_screenwidth()
    height = root.winfo_screenheight()
    a = random.randrange(0, width)
    b = random.randrange(0, height)
    
    window = tk.Toplevel(root)
    window.title('520快乐')
    window.geometry("200x50+" + str(a) + "+" + str(b))
    tk.Label(
        window,
        text='亲爱的嫁给我吧!',
        bg='Red',
        font=('楷体', 15),
        width=15, height=2
    ).pack()

def create_windows():
    for _ in range(100):  # 需要的弹框数量
        t = threading.Thread(target=show_window)
        threads.append(t)
        t.start()
        time.sleep(0.1)

root = tk.Tk()
threads = []

# 在主线程中创建窗口
create_windows_button = tk.Button(root, text="创建窗口", command=create_windows)
create_windows_button.pack()

root.mainloop()

赞(0) 打赏
未经允许不得转载:UUpython » 七夕表白弹窗
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!