本文介绍: pycharm实现无限弹窗程序(非病毒程序,仅整蛊使用)
运行环境
PyCharm 2023.2.1
python3.11
具体内容
源代码
import tkinter as tk
from tkinter import messagebox
import threading
class PopupGenerator:
def __init__(self):
self.root = tk.Tk()
self.root.geometry("200x120")
self.root.title("无限弹窗")
self.root.protocol("WM_DELETE_WINDOW", lambda: None) # 用户不可关闭弹窗一
self.common_style = {"font": ("华文新魏", 14)}
self.label = tk.Label(self.root, text="恭喜你打开了这个程序", **self.common_style, fg="red")
self.label.pack(pady=20)
self.close_program_button = tk.Button(self.root, text="关闭程序", command=self.try_detox, **self.common_style,
bg="green", fg="white")
self.close_program_button.pack(pady=10)
self.popup_count = 0
self.detox_attempts = 0
self.popup_positions = [] # 存储已存在弹窗的位置信息
self.generate_popup()
def generate_popup(self):
if self.popup_count < 20:
popup = tk.Toplevel(self.root)
popup.title("无限弹窗")
popup.geometry("200x120")
# 检查已存在弹窗的位置,设置新弹窗的位置
x, y = self.calculate_popup_position(popup.winfo_reqwidth(), popup.winfo_reqheight())
popup.geometry(f"+{x}+{y}")
popup_label = tk.Label(popup, text="多试一下", fg="blue", **self.common_style)
popup_label.pack(pady=20)
popup.protocol("WM_DELETE_WINDOW", self.on_popup_close)
self.popup_count += 1
threading.Timer(1, self.generate_popup).start()
def calculate_popup_position(self, width, height):
# 计算新弹窗的位置,避免重叠
x_offset, y_offset = 25, 25
x = self.root.winfo_x() + x_offset + len(self.popup_positions) * x_offset
y = self.root.winfo_y() + y_offset + len(self.popup_positions) * y_offset
# 存储新弹窗的位置信息
self.popup_positions.append((x, y))
return x, y
def on_popup_close(self):
self.generate_additional_popup()
def generate_additional_popup(self):
additional_popup = tk.Toplevel(self.root)
additional_popup.title("无限弹窗")
additional_popup.geometry("200x120")
# 检查已存在弹窗的位置,设置新弹窗的位置
x, y = self.calculate_popup_position(additional_popup.winfo_reqwidth(), additional_popup.winfo_reqheight())
additional_popup.geometry(f"+{x}+{y}")
additional_popup_label = tk.Label(additional_popup, text="并没有用", fg="purple", **self.common_style)
additional_popup_label.pack(pady=20)
def try_detox(self):
self.detox_attempts += 1
if self.detox_attempts <= 10:
messagebox.showinfo("温馨提示", f"你不会觉得点了 {self.detox_attempts} 次就有用吧")
else:
messagebox.showinfo("没想到啊", f"你居然坚持点了 {self.detox_attempts}次")
self.root.destroy()
if __name__ == "__main__":
popup_generator = PopupGenerator()
popup_generator.root.mainloop()
运行结果如图
点击运行时
点击关闭程序按钮(未点击足够次数)
点击关闭程序按钮(点击次数足够)
关闭多试一下弹窗(仅并没有用弹窗可关闭)
关闭程序的方法
1、任务管理器结束任务
2、点击足够次数的关闭程序
注意事项
1、没有什么技术含量,仅娱乐使用
原文地址:https://blog.csdn.net/m0_74865737/article/details/135760668
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_61951.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。