马上注册,结交更多好友,享用更多功能,让你轻松玩转小K网。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
伪装电脑蓝屏
- import tkinter as tk
- import random
- import time
- from tkinter import font
-
- # 创建主窗口
- root = tk.Tk()
- root.title("Windows Blue Screen Simulator")
- root.attributes('-fullscreen', True) # 全屏
- root.configure(bg='#000080') # 经典蓝屏蓝色
-
- # 设置字体
- try:
- # 尝试使用等宽字体
- text_font = font.Font(family='Consolas', size=12)
- title_font = font.Font(family='Consolas', size=16, weight='bold')
- error_font = font.Font(family='Courier', size=14, weight='bold')
- except:
- # 备用字体
- text_font = font.Font(family='Courier', size=12)
- title_font = font.Font(family='Courier', size=16, weight='bold')
- error_font = font.Font(family='Courier', size=14, weight='bold')
-
- # 生成随机错误代码
- error_code = f"0x{random.randint(10000000, 0xFFFFFFFF):X}"
-
- # 存储按键状态的变量
- pressed_keys = set()
-
- # 蓝屏文本内容
- # 修复了原代码中直接将pack()结果赋值的错误
- tk.Label(root, text="你的电脑遇到问题,需要重新启动。我们只收集某些错误信息,然后你可以重新启动。",
- bg='#000080', fg='white', font=title_font).pack(anchor='w', padx=50, pady=(50, 20))
-
- tk.Label(root, text=f"错误代码: {error_code}",
- bg='#000080', fg='yellow', font=error_font).pack(anchor='w', padx=50, pady=(0, 20))
-
- # 进度标签(命名以便后续获取)
- progress_label = tk.Label(root, text="收集内存转储信息... 0%",
- bg='#000080', fg='white', font=text_font, name='progress_label')
- progress_label.pack(anchor='w', padx=50, pady=(0, 10))
-
- # 进度条画布(命名以便后续获取)
- progress_bar = tk.Canvas(root, width=800, height=20, bg='#000080', highlightthickness=2, highlightbackground='white', name='progress_bar')
- progress_bar.pack(anchor='w', padx=50, pady=(0, 30))
-
- tk.Label(root, text=f"""技术信息:
- *** STOP: {error_code} (0x{random.randint(10000000, 0xFFFFFFFF):X},
- 0x{random.randint(10000000, 0xFFFFFFFF):X}, 0x{random.randint(10000000, 0xFFFFFFFF):X},
- 0x{random.randint(10000000, 0xFFFFFFFF):X})
-
- 如果这是你第一次看到此停止错误屏幕,请重启你的电脑。如果此屏幕再次出现,
- 请按照下列步骤操作:
-
- 检查以确保新的硬件或软件已正确安装。如果这是新安装,请向你的硬件或软件
- 制造商询问你可能需要的Windows更新。
-
- 如果问题继续,禁用或删除任何新安装的硬件或软件。禁用BIOS内存选项,
- 例如缓存或阴影。如果你需要使用安全模式删除或禁用组件,请重启电脑,
- 按F8键选择高级启动选项,然后选择安全模式。
-
- 有关此问题的技术信息,请访问 https://support.microsoft.com
-
- 收集完信息后将自动重启你的电脑...""",
- bg='#000080', fg='white', font=text_font, justify='left').pack(anchor='w', padx=50, pady=(0, 20))
-
- # 绘制进度条背景
- progress_bar.create_rectangle(0, 0, 800, 20, outline='white', width=2)
- progress_fill = progress_bar.create_rectangle(2, 2, 2, 18, fill='yellow', outline='')
-
- progress = 0
-
- def update_progress():
- """更新进度条"""
- global progress
- if progress < 100:
- progress += random.uniform(0.05, 0.15)
- # 更新进度文本
- progress_label.config(text=f"收集内存转储信息... {min(int(progress), 100)}%")
- # 更新进度条
- progress_bar.coords(progress_fill, 2, 2, int(796 * progress / 100), 18)
-
- if progress >= 100:
- # 进度到100%后重置
- # 改用tkinter的after代替time.sleep,避免界面卡死
- root.after(2000, reset_progress)
-
- # 循环调用
- root.after(50, update_progress)
-
- def reset_progress():
- """重置进度条"""
- global progress
- progress_bar.coords(progress_fill, 2, 2, 2, 18)
- progress = 0
-
- def on_key_press(event):
- """按键按下事件处理"""
- # 将按下的键加入集合
- pressed_keys.add(event.keysym)
- # 检查是否同时按下F5和F4
- if 'F5' in pressed_keys and 'F4' in pressed_keys:
- root.destroy()
-
- def on_key_release(event):
- """按键释放事件处理"""
- # 从集合中移除释放的键
- if event.keysym in pressed_keys:
- pressed_keys.remove(event.keysym)
-
- # 绑定F5和F4的按下/释放事件
- root.bind('<KeyPress>', on_key_press)
- root.bind('<KeyRelease>', on_key_release)
-
- # 启动进度更新
- update_progress()
-
- # 运行主循环
- root.mainloop()
复制代码
|