愚人节,赶紧用这五个python脚本整蛊你的朋友吧

liftword4周前 (04-27)技术文章11

引言

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("<Alt-F4>", 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("<Escape>", close)
    root.bind("<Button-1>", 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("<Alt-F4>", 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()

结尾

今天介绍了五个非常有趣的整蛊脚本,在这个愚人节,赶紧制作一个发给你的朋友吧,希望你们的友谊能够得到升华。

相关文章

python学习——028pop方法是如何移除不同数据结构中的元素

在 Python 里,pop 是个常用方法,不同的数据类型中 pop 方法的参数情况存在差异,下面介绍在列表(list)、字典(dict)和集合(set)里 pop 方法。列表(list)的pop方法...

python中字典使用pop和使用del的区别

在 Python 中,字典是一种键值对数据结构,其中每个键(key)都与一个值(value)相关联。在操作字典时,通常需要删除字典中的某些键值对。在 Python 中,有两种方法可以从字典中删除键值对...

python学习——030pop 方法从列表中移除多个元素

若要使用 pop 方法从列表中移除多个元素,可依据具体的移除需求采用不同的策略,下面介绍几种常见的情况及对应的实现方式。按索引移除多个不连续的元素若要移除的元素索引是不连续的,可按索引从大到小的顺序依...

用Python写了一个上课点名系统(附源码)(自制考勤系统)

今天刷到了一个这样的短视频,我寻思我是不是也可以写一个类似的上课点名程序,想法经不起等待,说写就写~一.准备工作私信小编01即可获取大量Python学习资源1.TkinterTkinter 是 pyt...

Python数据分析师使用低代码Streamlit实现Web数据可视化方法

Python数据分析师工作拓展助手,在不用掌握复杂的HTML、JavaScript、CSS等前端技术的情况下,也能快速做出来一个炫酷的Web APP,把数据分析结果可视化呈现出来!本文推荐Python...

Python中`yield`关键字:揭开生成器与迭代的神秘面纱

在Python编程世界里,yield关键字是一个非常重要且有趣的存在,它与生成器、迭代等概念紧密相关。Stack Overflow上关于 “Python中yield关键字有什么作用?” 的问题讨论热度...