引言
4月1日,愚人节如期而至,怎样通过 python 来给你的朋友致以亲切问候呢?有没有想过使用 python 来整蛊你的朋友?
本文将给你列举五个脚本,或许能够进一步 促进你和朋友之间的友谊 哦!
以下所有程序最好能够打包成 exe 发给你的朋友,这样会更好哦!
1、关不掉的窗口
这是一个关不掉的窗口,只有输入提示的内容才能被正常关闭。
演示
关不掉的窗口
代码
import tkinter as tk
from tkinter import messagebox
class UnClosableWindow:
def __init__(self):
self.root = tk.Tk()
self.root.title("无法关闭窗口")
self.root.protocol("WM_DELETE_WINDOW", self.on_close)
self.tips = '我是小丑'
# 设置窗口大小和位置
self.root.geometry("400x200+500+300")
# 添加标签
label = tk.Label(self.root, text="输入下面的内容,否则别想关掉我", font=("Arial", 14))
label.pack(pady=20)
# 添加输入框
self.entry = tk.Entry(self.root, font=("Arial", 12), width=30)
self.entry.pack(pady=10)
# 添加提示标签
hint_label = tk.Label(self.root, text=f"请输入'{self.tips}'来关闭窗口", font=("Arial", 10))
hint_label.pack(pady=5)
# 添加按钮
button = tk.Button(self.root, text="尝试关闭", command=self.on_close)
button.pack(pady=10)
# 禁止使用Alt+F4等系统快捷键
self.root.bind("", lambda e: "break")
def on_close(self):
# 检查输入内容
if self.entry.get().strip() == self.tips:
self.root.destroy()
else:
messagebox.showwarning("错误", "请输入正确的关闭密码!")
self.root.focus_force() # 强制窗口获取焦点
self.entry.focus_set() # 将焦点设置到输入框
def run(self):
self.root.mainloop()
# 创建并运行窗口
if __name__ == "__main__":
window = UnClosableWindow()
window.run() 2、监控程序
这是一个监控你朋友键盘输入,然后弹出将 内容发送给他老板 的整蛊程序。
演示
监控程序截图
安装库
pip install pynput代码
import tkinter as tk
from tkinter import messagebox
from pynput import keyboard
import threading
class InputMonitor:
def __init__(self):
self.recorded_input = []
self.listener = None
self.root = tk.Tk()
self.root.withdraw() # 隐藏主窗口
def on_press(self, key):
try:
# 记录可打印字符
self.recorded_input.append(key.char)
except AttributeError:
# 处理特殊按键
if key == keyboard.Key.space:
self.recorded_input.append(' ')
elif key == keyboard.Key.enter:
self.recorded_input.append('\n')
elif key == keyboard.Key.backspace and self.recorded_input:
self.recorded_input.pop()
def show_result(self):
if self.listener:
self.listener.stop()
input_text = ''.join(self.recorded_input)
# 创建显示窗口
result_window = tk.Toplevel()
result_window.title("监控结果")
tk.Label(result_window, text="监控到的输入内容:").pack(pady=5)
text_widget = tk.Text(result_window, height=10, width=50)
text_widget.pack(padx=10, pady=5)
text_widget.insert(tk.END, input_text)
text_widget.config(state=tk.DISABLED)
# 显示警告消息
messagebox.showwarning(
"安全警告",
"你的输入内容已被监视,正在发送给你的老板",
parent=result_window
)
tk.Button(result_window, text="关闭", command=result_window.destroy).pack(pady=5)
# 启动主事件循环
self.root.mainloop()
def start_monitoring(self):
self.recorded_input = []
self.listener = keyboard.Listener(on_press=self.on_press)
self.listener.start()
# 10秒后停止监听并通过主线程显示结果
threading.Timer(10.0, lambda: self.root.after(0, self.show_result)).start()
if __name__ == "__main__":
monitor = InputMonitor()
monitor.start_monitoring()
# 启动Tkinter主事件循环
tk.mainloop()3、小丑头程序
打开程序,出现一个全屏小丑头,让你的朋友 吓一跳。
演示
全屏的小丑
安装库
pip install Pillow
pip install requests代码
import tkinter as tk
from PIL import Image, ImageTk
from io import BytesIO
import requests
def show_joker_image():
# 创建一个全屏窗口
root = tk.Tk()
root.attributes('-fullscreen', True) # 全屏显示
root.configure(bg='black') # 背景设为黑色
try:
# 这里可以替换为一个你找的图片URL(需要网络)
response = requests.get(
"https://gips3.baidu.com/it/u=3792672865,2895369421&fm=3042&app=3042&f=JPEG&wm=1,baiduai,0,0,13,9&wmo=0,0&w=512&h=512") # 替换为实际图片URL
img = Image.open(BytesIO(response.content))
except:
root.destroy()
return
# 调整图片大小以适应屏幕
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
img = img.resize((screen_width, screen_height), Image.Resampling.LANCZOS)
img_tk = ImageTk.PhotoImage(img)
# 显示图片
label = tk.Label(root, image=img_tk)
label.pack()
# 点击窗口或按ESC键退出
def close(event=None):
root.destroy()
root.bind("", close)
root.bind("", close) # 鼠标左键点击退出
root.mainloop()
if __name__ == "__main__":
show_joker_image() 4、可怕的倒计时关机程序
这是个无法关闭的程序,上面显示倒计时结束后要关机,其实在最后结束弹出 《黑猫警长》的主题曲,吓你朋友一大跳。
演示
倒计时
代码
import tkinter as tk
from tkinter import messagebox
import webbrowser
class PrankWindow:
def __init__(self):
self.root = tk.Tk()
self.root.title("系统警告")
self.root.geometry("400x200")
self.root.protocol("WM_DELETE_WINDOW", self.prevent_close)
# 使窗口始终置顶
self.root.attributes("-topmost", True)
# 禁用Alt+F4
self.root.bind("", lambda e: "break")
self.label = tk.Label(self.root, text="系统将在10秒后自动关闭!\n请保存所有工作!",
font=("Arial", 16), fg="red")
self.label.pack(pady=20)
self.countdown_label = tk.Label(self.root, text="10", font=("Arial", 24))
self.countdown_label.pack()
self.seconds = 10
self.update_countdown()
self.root.mainloop()
def prevent_close(self):
# 什么都不做,防止窗口被关闭
pass
def update_countdown(self):
self.countdown_label.config(text=str(self.seconds))
self.seconds -= 1
if self.seconds >= 0:
self.root.after(1000, self.update_countdown)
else:
self.root.destroy()
self.play_prank()
def play_prank(self):
# 这里替换成你想打开的搞笑视频URL
video_url = "https://www.bilibili.com/video/BV16x411u7Dn"
# 尝试用默认浏览器打开视频
try:
webbrowser.open(video_url)
except:
pass
# 显示"骗到你啦!"的消息框
messagebox.showinfo("骗到你啦!", "哈哈,骗到你啦!电脑不会真的关闭!")
if __name__ == "__main__":
# 尝试隐藏主控制台窗口(仅Windows有效)
try:
import ctypes
kernel32 = ctypes.WinDLL('kernel32')
user32 = ctypes.WinDLL('user32')
kernel32.GetConsoleWindow()
user32.ShowWindow(kernel32.GetConsoleWindow(), 0)
except:
pass
prank = PrankWindow() 5、黑客控制程序
弹出一个窗口,提示 “你的电脑正被黑客控制” ,并且控制朋友的电脑鼠标随机移动十秒,十秒后,等他关闭弹窗,再次弹出 “哈哈,你被骗了吧!”。
演示
黑客控制程序
安装库
pip install pyautogui代码
import tkinter as tk
from tkinter import messagebox
import pyautogui
import random
import threading
import time
defmove_mouse_randomly(duration):
start_time = time.time()
screen_width, screen_height = pyautogui.size()
while time.time() - start_time < duration:
# 随机移动鼠标
x = random.randint(0, screen_width)
y = random.randint(0, screen_height)
pyautogui.moveTo(x, y, duration=0.2)
time.sleep(0.1)
defprank():
# 显示第一个警告窗口
root = tk.Tk()
root.withdraw() # 隐藏主窗口
# 在新线程中移动鼠标10秒
mouse_thread = threading.Thread(target=move_mouse_randomly, args=(10,))
mouse_thread.start()
messagebox.showwarning("警告", "你的电脑正被黑客控制")
root.destroy()
# 显示第二个提示窗口
root = tk.Tk()
root.withdraw()
messagebox.showinfo("提示", "哈哈,被骗了吧!")
root.destroy()
if __name__ == "__main__":
# 设置pyautogui的安全措施,防止无法停止
pyautogui.FAILSAFE = True
pyautogui.PAUSE = 0.1
prank()结尾
今天介绍了五个非常有趣的整蛊脚本,在这个愚人节,赶紧制作一个发给你的朋友吧,希望你们的友谊能够得到升华。
