37创客科创中心

 找回密码
 立即注册
12
返回列表 发新帖
楼主: 37ck

MIND+下载

  [复制链接]

45

主题

84

帖子

905

积分

版主

Rank: 7Rank: 7Rank: 7

积分
905
 楼主| 发表于 2025-2-6 17:51:28 | 显示全部楼层
回复

使用道具 举报

194

主题

324

帖子

2399

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2399
发表于 2025-2-9 12:12:03 | 显示全部楼层
  1. import sqlite3
  2. import tkinter as tk
  3. from ttkbootstrap import Style
  4. from ttkbootstrap.dialogs import Messagebox
  5. from wxauto import WeChat

  6. # 初始化数据库
  7. def init_db():
  8.     conn = sqlite3.connect('wechat_data.db')
  9.     c = conn.cursor()
  10.     c.execute('''CREATE TABLE IF NOT EXISTS contacts
  11.                  (id INTEGER PRIMARY KEY AUTOINCREMENT,
  12.                  name TEXT NOT NULL,
  13.                  type TEXT NOT NULL)''')
  14.     c.execute('''CREATE TABLE IF NOT EXISTS messages
  15.                  (id INTEGER PRIMARY KEY AUTOINCREMENT,
  16.                  content TEXT NOT NULL)''')
  17.     conn.commit()
  18.     conn.close()

  19. # 插入联系人
  20. def insert_contact(name, contact_type):
  21.     conn = sqlite3.connect('wechat_data.db')
  22.     c = conn.cursor()
  23.     c.execute("INSERT INTO contacts (name, type) VALUES (?,?)", (name, contact_type))
  24.     conn.commit()
  25.     conn.close()
  26.     refresh_contacts_listbox()

  27. # 插入消息
  28. def insert_message(content):
  29.     conn = sqlite3.connect('wechat_data.db')
  30.     c = conn.cursor()
  31.     c.execute("INSERT INTO messages (content) VALUES (?)", (content,))
  32.     conn.commit()
  33.     conn.close()
  34.     refresh_messages_listbox()

  35. # 删除联系人
  36. def delete_contact():
  37.     selected_index = contacts_listbox.curselection()
  38.     if selected_index:
  39.         selected_id = contacts[selected_index[0]][0]
  40.         conn = sqlite3.connect('wechat_data.db')
  41.         c = conn.cursor()
  42.         c.execute("DELETE FROM contacts WHERE id=?", (selected_id,))
  43.         conn.commit()
  44.         conn.close()
  45.         refresh_contacts_listbox()
  46.     else:
  47.         Messagebox.show_warning("请选择一个联系人", "警告")

  48. # 删除消息
  49. def delete_message():
  50.     selected_index = messages_listbox.curselection()
  51.     if selected_index:
  52.         selected_id = messages[selected_index[0]][0]
  53.         conn = sqlite3.connect('wechat_data.db')
  54.         c = conn.cursor()
  55.         c.execute("DELETE FROM messages WHERE id=?", (selected_id,))
  56.         conn.commit()
  57.         conn.close()
  58.         refresh_messages_listbox()
  59.     else:
  60.         Messagebox.show_warning("请选择一条消息", "警告")

  61. # 更新联系人
  62. def update_contact():
  63.     selected_index = contacts_listbox.curselection()
  64.     if selected_index:
  65.         selected_id = contacts[selected_index[0]][0]
  66.         new_name = contact_name_entry.get()
  67.         new_type = contact_type_var.get()
  68.         conn = sqlite3.connect('wechat_data.db')
  69.         c = conn.cursor()
  70.         c.execute("UPDATE contacts SET name=?, type=? WHERE id=?", (new_name, new_type, selected_id))
  71.         conn.commit()
  72.         conn.close()
  73.         refresh_contacts_listbox()
  74.     else:
  75.         Messagebox.show_warning("请选择一个联系人", "警告")

  76. # 更新消息
  77. def update_message():
  78.     selected_index = messages_listbox.curselection()
  79.     if selected_index:
  80.         selected_id = messages[selected_index[0]][0]
  81.         new_content = message_content_entry.get()
  82.         conn = sqlite3.connect('wechat_data.db')
  83.         c = conn.cursor()
  84.         c.execute("UPDATE messages SET content=? WHERE id=?", (new_content, selected_id))
  85.         conn.commit()
  86.         conn.close()
  87.         refresh_messages_listbox()
  88.     else:
  89.         Messagebox.show_warning("请选择一条消息", "警告")

  90. # 查询联系人
  91. def refresh_contacts_listbox():
  92.     conn = sqlite3.connect('wechat_data.db')
  93.     c = conn.cursor()
  94.     c.execute("SELECT * FROM contacts")
  95.     global contacts
  96.     contacts = c.fetchall()
  97.     conn.close()
  98.     contacts_listbox.delete(0, tk.END)
  99.     for contact in contacts:
  100.         contacts_listbox.insert(tk.END, f"{contact[1]} ({contact[2]})")

  101. # 查询消息
  102. def refresh_messages_listbox():
  103.     conn = sqlite3.connect('wechat_data.db')
  104.     c = conn.cursor()
  105.     c.execute("SELECT * FROM messages")
  106.     global messages
  107.     messages = c.fetchall()
  108.     conn.close()
  109.     messages_listbox.delete(0, tk.END)
  110.     for message in messages:
  111.         messages_listbox.insert(tk.END, message[1])

  112. # 发送消息
  113. def send_messages():
  114.     wx = WeChat()
  115.     for contact in contacts:
  116.         for message in messages:
  117.             wx.ChatWith(contact[1])
  118.             wx.SendMsg(message[1])

  119. # 初始化数据库
  120. init_db()

  121. # 创建主窗口
  122. style = Style(theme='flatly')
  123. root = style.master
  124. root.title("微信消息发送程序")

  125. # 联系人管理部分
  126. contact_frame = tk.Frame(root)
  127. contact_frame.pack(pady=10)

  128. contact_label = tk.Label(contact_frame, text="联系人管理")
  129. contact_label.pack()

  130. contact_name_label = tk.Label(contact_frame, text="联系人姓名:")
  131. contact_name_label.pack(side=tk.LEFT)
  132. contact_name_entry = tk.Entry(contact_frame)
  133. contact_name_entry.pack(side=tk.LEFT)

  134. contact_type_label = tk.Label(contact_frame, text="类型 (好友/群):")
  135. contact_type_label.pack(side=tk.LEFT)
  136. contact_type_var = tk.StringVar()
  137. contact_type_var.set("好友")
  138. contact_type_option = tk.OptionMenu(contact_frame, contact_type_var, "好友", "群","公众号")
  139. contact_type_option.pack(side=tk.LEFT)

  140. add_contact_button = tk.Button(contact_frame, text="添加联系人", command=lambda: insert_contact(contact_name_entry.get(), contact_type_var.get()))
  141. add_contact_button.pack(side=tk.LEFT)

  142. delete_contact_button = tk.Button(contact_frame, text="删除联系人", command=delete_contact)
  143. delete_contact_button.pack(side=tk.LEFT)

  144. update_contact_button = tk.Button(contact_frame, text="更新联系人", command=update_contact)
  145. update_contact_button.pack(side=tk.LEFT)

  146. contacts_listbox = tk.Listbox(root)
  147. contacts_listbox.pack(pady=10)
  148. refresh_contacts_listbox()

  149. # 消息管理部分
  150. message_frame = tk.Frame(root)
  151. message_frame.pack(pady=10)

  152. message_label = tk.Label(message_frame, text="消息管理")
  153. message_label.pack()

  154. message_content_label = tk.Label(message_frame, text="消息内容:")
  155. message_content_label.pack(side=tk.LEFT)
  156. message_content_entry = tk.Entry(message_frame)
  157. message_content_entry.pack(side=tk.LEFT)

  158. add_message_button = tk.Button(message_frame, text="添加消息", command=lambda: insert_message(message_content_entry.get()))
  159. add_message_button.pack(side=tk.LEFT)

  160. delete_message_button = tk.Button(message_frame, text="删除消息", command=delete_message)
  161. delete_message_button.pack(side=tk.LEFT)

  162. update_message_button = tk.Button(message_frame, text="更新消息", command=update_message)
  163. update_message_button.pack(side=tk.LEFT)

  164. messages_listbox = tk.Listbox(root)
  165. messages_listbox.pack(pady=10)
  166. refresh_messages_listbox()

  167. # 发送消息按钮
  168. send_button = tk.Button(root, text="发送消息", command=send_messages)
  169. send_button.pack(pady=20)

  170. # 运行主循环
  171. root.mainloop()
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|37创客科创中心

GMT+8, 2025-12-10 04:09 , Processed in 0.150607 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表