本教程将向您展示如何使用Python和Tkinter库创建一个微信表情轰炸机。该程序将允许用户选择表情包并设置轰炸次数和间隔时间,然后自动在微信对话框中发送表情。本教程还包含了一个用户界面,使用户可以方便地选择和配置轰炸参数。
import tkinter as tk
from tkinter import ttk, messagebox, simpledialog
import random
import threading
import time
from pynput.keyboard import Controller as KB # 控制键盘输入
from pynput.mouse import Controller, Button # 控制鼠标点击
# 微信表情列表
Wechat_expression = [
"[微笑]", "[撇嘴]", "[色]", "[发呆]", "[得意]", "[流泪]", "[害羞]", "[闭嘴]", "[睡]", "[大哭]",
# ... (其余表情)
"[烟花]"
]
# 键盘控制函数
def keyboardInput(string):
keyboard = KB()
keyboard.type(string)
# 鼠标控制函数
def mouseClick():
mouse = Controller()
mouse.press(Button.left)
mouse.release(Button.left)
# 响应函数
def response(number, interval, selected_exp):
for i in range(number):
if stop_bombing.is_set(): # 检查是否需要停止
break
sentence = random.choice(selected_exp)
keyboardInput(sentence)
mouseClick()
time.sleep(interval) # 每条消息间隔
progress_var.set(i + 1) # 更新进度条
# 添加选中的表情包到轰炸列表
def add_selected_exp():
selected_indices = listbox.curselection()
selected_exp = [Wechat_expression[i] for i in selected_indices]
if not selected_exp:
messagebox.showwarning("警告", "请至少选择一个表情包!")
return
return selected_exp
# 开始轰炸线程
def start_bombing_thread():
try:
number = int(entry.get())
interval = float(interval_entry.get())
selected_exp = add_selected_exp()
if not selected_exp:
return
stop_bombing.clear() # 重置停止标志
if scheduled_bombing.get():
schedule_time_str = scheduled_time_entry.get()
try:
schedule_time = time.strptime(schedule_time_str, "%Y-%m-%d %H:%M:%S")
schedule_time = time.mktime(schedule_time)
current_time = time.time()
if current_time < schedule_time:
time.sleep(schedule_time - current_time)
except ValueError:
messagebox.showerror("错误", "请输入正确的日期时间格式!")
return
threading.Thread(target=response, args=(number, interval, selected_exp)).start()
except ValueError:
messagebox.showerror("错误", "请输入有效的数字!")
# 停止轰炸
def stop_bombing_callback():
stop_bombing.set()
# 创建主窗口
root = tk.Tk()
root.title("微信表情轰炸机")
# 设置窗口大小和位置
root.geometry("600x500+200+200")
# 创建输入框
entry_label = tk.Label(root, text="轰炸次数:")
entry_label.pack()
entry = tk.Entry(root)
entry.pack()
# 创建间隔时间输入框
interval_label = tk.Label(root, text="间隔时间(秒):")
interval_label.pack()
interval_entry = tk.Entry(root)
interval_entry.pack()
interval_entry.insert(0, "0.4") # 默认间隔时间
# 创建表情包选择列表
listbox_label = tk.Label(root, text="选择表情包:")
listbox_label.pack()
listbox = tk.Listbox(root, selectmode='multiple', height=10)
for exp in Wechat_expression:
listbox.insert(tk.END, exp)
listbox.pack()
# 创建确认选择的按钮
add_button = tk.Button(root, text="确认选择", command=add_selected_exp)
add_button.pack()
# 创建定时轰炸选项
scheduled_bombing = tk.BooleanVar()
scheduled_checkbutton = tk.Checkbutton(root, text="定时轰炸", variable=scheduled_bombing)
scheduled_checkbutton.pack()
# 创建定时时间输入框
scheduled_time_label = tk.Label(root, text="设定时间(YYYY-MM-DD HH:MM:SS):")
scheduled_time_label.pack()
scheduled_time_entry = tk.Entry(root)
scheduled_time_entry.pack()
# 创建进度条
progress_var = tk.IntVar()
progress_bar = ttk.Progressbar(root, length=200, maximum=100, variable=progress_var, mode='determinate')
progress_bar.pack()
# 创建启动按钮
start_button = tk.Button(root, text="开始轰炸", command=start_bombing_thread)
start_button.pack()
# 创建重复模式选项
repeat_mode = tk.BooleanVar()
repeat_checkbutton = tk.Checkbutton(root, text="重复模式", variable=repeat_mode)
repeat_checkbutton.pack()
# 创建重复次数输入框
repeat_label = tk.Label(root, text="重复次数:")
repeat_label.pack()
repeat_entry = tk.Entry(root)
repeat_entry.pack()
repeat_entry.insert(0, "1") # 默认重复一次
# 创建重复间隔时间输入框
repeat_interval_label = tk.Label(root, text="重复间隔时间(分钟):")
repeat_interval_label.pack()
repeat_interval_entry = tk.Entry(root)
repeat_interval_entry.pack()
repeat_interval_entry.insert(0, "5") # 默认间隔5分钟
# 创建表情包管理按钮
def manage_expression():
# 用户可以添加、删除和编辑自定义表情包列表
pass # 实现表情包管理功能
manage_button = tk.Button(root, text="管理表情包", command=manage_expression)
manage_button.pack()
# 创建日志记录功能
def log_bombing():
# 记录轰炸活动的日志
pass # 实现日志记录功能
log_button = tk.Button(root, text="查看日志", command=log_bombing)
log_button.pack()
# 创建停止按钮
stop_bombing = threading.Event() # 用于停止轰炸的线程事件
stop_button = tk.Button(root, text="停止轰炸", command=stop_bombing_callback)
stop_button.pack()
# 运行主循环
root.mainloop()
本教程向您展示了如何使用Python和Tkinter库创建一个微信表情轰炸机。通过本教程,您应该能够理解如何使用Tkinter创建图形用户界面,以及如何使用pynput库进行键盘和鼠标控制。希望这个教程能够帮助您更好地理解Python在图形界面开发方面的应用。