|
|
发表于 2025-2-9 12:12:03
|
显示全部楼层
- import sqlite3
- import tkinter as tk
- from ttkbootstrap import Style
- from ttkbootstrap.dialogs import Messagebox
- from wxauto import WeChat
- # 初始化数据库
- def init_db():
- conn = sqlite3.connect('wechat_data.db')
- c = conn.cursor()
- c.execute('''CREATE TABLE IF NOT EXISTS contacts
- (id INTEGER PRIMARY KEY AUTOINCREMENT,
- name TEXT NOT NULL,
- type TEXT NOT NULL)''')
- c.execute('''CREATE TABLE IF NOT EXISTS messages
- (id INTEGER PRIMARY KEY AUTOINCREMENT,
- content TEXT NOT NULL)''')
- conn.commit()
- conn.close()
- # 插入联系人
- def insert_contact(name, contact_type):
- conn = sqlite3.connect('wechat_data.db')
- c = conn.cursor()
- c.execute("INSERT INTO contacts (name, type) VALUES (?,?)", (name, contact_type))
- conn.commit()
- conn.close()
- refresh_contacts_listbox()
- # 插入消息
- def insert_message(content):
- conn = sqlite3.connect('wechat_data.db')
- c = conn.cursor()
- c.execute("INSERT INTO messages (content) VALUES (?)", (content,))
- conn.commit()
- conn.close()
- refresh_messages_listbox()
- # 删除联系人
- def delete_contact():
- selected_index = contacts_listbox.curselection()
- if selected_index:
- selected_id = contacts[selected_index[0]][0]
- conn = sqlite3.connect('wechat_data.db')
- c = conn.cursor()
- c.execute("DELETE FROM contacts WHERE id=?", (selected_id,))
- conn.commit()
- conn.close()
- refresh_contacts_listbox()
- else:
- Messagebox.show_warning("请选择一个联系人", "警告")
- # 删除消息
- def delete_message():
- selected_index = messages_listbox.curselection()
- if selected_index:
- selected_id = messages[selected_index[0]][0]
- conn = sqlite3.connect('wechat_data.db')
- c = conn.cursor()
- c.execute("DELETE FROM messages WHERE id=?", (selected_id,))
- conn.commit()
- conn.close()
- refresh_messages_listbox()
- else:
- Messagebox.show_warning("请选择一条消息", "警告")
- # 更新联系人
- def update_contact():
- selected_index = contacts_listbox.curselection()
- if selected_index:
- selected_id = contacts[selected_index[0]][0]
- new_name = contact_name_entry.get()
- new_type = contact_type_var.get()
- conn = sqlite3.connect('wechat_data.db')
- c = conn.cursor()
- c.execute("UPDATE contacts SET name=?, type=? WHERE id=?", (new_name, new_type, selected_id))
- conn.commit()
- conn.close()
- refresh_contacts_listbox()
- else:
- Messagebox.show_warning("请选择一个联系人", "警告")
- # 更新消息
- def update_message():
- selected_index = messages_listbox.curselection()
- if selected_index:
- selected_id = messages[selected_index[0]][0]
- new_content = message_content_entry.get()
- conn = sqlite3.connect('wechat_data.db')
- c = conn.cursor()
- c.execute("UPDATE messages SET content=? WHERE id=?", (new_content, selected_id))
- conn.commit()
- conn.close()
- refresh_messages_listbox()
- else:
- Messagebox.show_warning("请选择一条消息", "警告")
- # 查询联系人
- def refresh_contacts_listbox():
- conn = sqlite3.connect('wechat_data.db')
- c = conn.cursor()
- c.execute("SELECT * FROM contacts")
- global contacts
- contacts = c.fetchall()
- conn.close()
- contacts_listbox.delete(0, tk.END)
- for contact in contacts:
- contacts_listbox.insert(tk.END, f"{contact[1]} ({contact[2]})")
- # 查询消息
- def refresh_messages_listbox():
- conn = sqlite3.connect('wechat_data.db')
- c = conn.cursor()
- c.execute("SELECT * FROM messages")
- global messages
- messages = c.fetchall()
- conn.close()
- messages_listbox.delete(0, tk.END)
- for message in messages:
- messages_listbox.insert(tk.END, message[1])
- # 发送消息
- def send_messages():
- wx = WeChat()
- for contact in contacts:
- for message in messages:
- wx.ChatWith(contact[1])
- wx.SendMsg(message[1])
- # 初始化数据库
- init_db()
- # 创建主窗口
- style = Style(theme='flatly')
- root = style.master
- root.title("微信消息发送程序")
- # 联系人管理部分
- contact_frame = tk.Frame(root)
- contact_frame.pack(pady=10)
- contact_label = tk.Label(contact_frame, text="联系人管理")
- contact_label.pack()
- contact_name_label = tk.Label(contact_frame, text="联系人姓名:")
- contact_name_label.pack(side=tk.LEFT)
- contact_name_entry = tk.Entry(contact_frame)
- contact_name_entry.pack(side=tk.LEFT)
- contact_type_label = tk.Label(contact_frame, text="类型 (好友/群):")
- contact_type_label.pack(side=tk.LEFT)
- contact_type_var = tk.StringVar()
- contact_type_var.set("好友")
- contact_type_option = tk.OptionMenu(contact_frame, contact_type_var, "好友", "群","公众号")
- contact_type_option.pack(side=tk.LEFT)
- add_contact_button = tk.Button(contact_frame, text="添加联系人", command=lambda: insert_contact(contact_name_entry.get(), contact_type_var.get()))
- add_contact_button.pack(side=tk.LEFT)
- delete_contact_button = tk.Button(contact_frame, text="删除联系人", command=delete_contact)
- delete_contact_button.pack(side=tk.LEFT)
- update_contact_button = tk.Button(contact_frame, text="更新联系人", command=update_contact)
- update_contact_button.pack(side=tk.LEFT)
- contacts_listbox = tk.Listbox(root)
- contacts_listbox.pack(pady=10)
- refresh_contacts_listbox()
- # 消息管理部分
- message_frame = tk.Frame(root)
- message_frame.pack(pady=10)
- message_label = tk.Label(message_frame, text="消息管理")
- message_label.pack()
- message_content_label = tk.Label(message_frame, text="消息内容:")
- message_content_label.pack(side=tk.LEFT)
- message_content_entry = tk.Entry(message_frame)
- message_content_entry.pack(side=tk.LEFT)
- add_message_button = tk.Button(message_frame, text="添加消息", command=lambda: insert_message(message_content_entry.get()))
- add_message_button.pack(side=tk.LEFT)
- delete_message_button = tk.Button(message_frame, text="删除消息", command=delete_message)
- delete_message_button.pack(side=tk.LEFT)
- update_message_button = tk.Button(message_frame, text="更新消息", command=update_message)
- update_message_button.pack(side=tk.LEFT)
- messages_listbox = tk.Listbox(root)
- messages_listbox.pack(pady=10)
- refresh_messages_listbox()
- # 发送消息按钮
- send_button = tk.Button(root, text="发送消息", command=send_messages)
- send_button.pack(pady=20)
- # 运行主循环
- root.mainloop()
复制代码 |
|