前言
用Python实现黑客代码,根本关不掉的窗口
📝个人主页→数据挖掘博主ZTLJQ的主页
个人推荐python学习系列:
☄️爬虫JS逆向系列专栏 - 爬虫逆向教学
☄️python系列专栏 - 从零开始学python
首先先介绍一下使用到的tkinter
库
Tkinter 是 Python 的标准图形用户界面(GUI)工具包,它提供了创建窗口、按钮、标签、文本框等 GUI 元素的功能,用于构建简单的桌面应用程序。Tkinter 是基于 Tcl/Tk(一种脚本语言)开发的,它被包含在 Python 标准库中,因此无需额外安装即可使用。在这个代码示例中,我们使用了 Tkinter 来创建一个弹窗窗口,以及添加标签和按钮等控件。
接下来给大家分析一下代码、首先我们需要导入第三方库
import tkinter as tk
import random
这段代码导入了
tkinter
模块和random
模块。tkinter
模块是用于创建 GUI 程序的模块,而random
模块是用于生成随机数的模块。
下面这段代码,定义了
PopupWindow
类,它用于创建弹窗窗口。__init__
方法是一个特殊的方法,在创建类的实例时被调用。在这个方法中,我们设置了窗口的标题("恶搞弹窗")、大小(400x300)以及窗口不可调整大小。
class PopupWindow:
def __init__(self, root):
self.root = root
self.root.title("恶搞弹窗")
self.root.geometry("400x300")
self.root.resizable(False, False)
接下来这段代码创建了一个
Label
(标签)控件,并设置了标签的文本为 "抓不住我",字体为 Arial、大小为 24,背景色为白色,前景色(字体颜色)为红色。然后,使用place
方法将标签放置在窗口中央。
self.label = tk.Label(root, text="抓不住我", font=("Arial", 24), bg="white", fg="red")
self.label.place(relx=0.5, rely=0.3, anchor=tk.CENTER)
接下来这行代码使用
protocol
方法将窗口的关闭事件与move_window
方法进行绑定。WM_DELETE_WINDOW
是一个特殊的协议,它在用户点击窗口的关闭按钮时触发。绑定后,当点击关闭按钮时,会调用move_window
方法。
self.root.protocol("WM_DELETE_WINDOW", self.move_window)
接下来这段代码,
move_window
方法生成随机的坐标,将窗口移动到新的位置。首先,使用
random.randint()
函数生成在窗口可见区域内的随机 x 和 y 坐标。然后,使用
self.root.geometry()
方法将窗口的位置设置为生成的坐标。
def move_window(self):
x = random.randint(0, self.root.winfo_screenwidth() - self.root.winfo_width())
y = random.randint(0, self.root.winfo_screenheight() - self.root.winfo_height())
self.root.geometry("+{}+{}".format(x, y))
接下来的代码是程序的入口点。在
__name__ == "__main__"
的条件下,创建一个 Tkinter 的根窗口实例root
,然后创建PopupWindow
类的实例popup
,最后通过调用root.mainloop()
方法进入主事件循环,以显示窗口并等待用户交互。
if __name__ == "__main__":
root = tk.Tk()
popup = PopupWindow(root)
root.mainloop()
最后给大家带来完整的代码
import tkinter as tk
import random
class PopupWindow:
def __init__(self, root):
self.root = root
self.root.title("恶搞弹窗")
self.root.geometry("400x300")
self.root.resizable(False, False)
self.label = tk.Label(root, text="抓不住我", font=("Arial", 24), bg="white", fg="red")
self.label.place(relx=0.5, rely=0.3, anchor=tk.CENTER)
self.root.protocol("WM_DELETE_WINDOW", self.move_window)
def move_window(self):
# 随机生成新的窗口位置
x = random.randint(0, self.root.winfo_screenwidth() - self.root.winfo_width())
y = random.randint(0, self.root.winfo_screenheight() - self.root.winfo_height())
self.root.geometry("+{}+{}".format(x, y))
if __name__ == "__main__":
root = tk.Tk()
popup = PopupWindow(root)
root.mainloop()