Python3+PyQt5+itchat实现微信定时发送消息
本文介绍使用Python3、PyQt5和itchat库开发微信定时发送消息小程序的方法。通过图形界面获取好友列表,设定发送时间,程序将在指定时刻自动向选定好友发送文字消息。支持登录状态记忆,适合节日祝福等场景,需确保使用Python3环境。
编写该程序的初衷是为了在春节、重要纪念日等节点,向亲友发送祝福。为了体现诚意,希望消息能在凌晨0点准时送达。鉴于个人有时因贪睡而忘记操作,因此开发了这款微信定时发送消息的小工具。
运行环境要求如下:
必须使用python 3.x版本,该方案不支持python2。
准备工作阶段:
由于程序需要调用微信接口,因此引入了itchat库。
图形界面部分采用了pyqt5进行构建。
安装依赖的命令如下:
pip install PyQt5 pip install itchat
以下是具体的代码实现部分。
# -*- coding: utf-8 -*-
# @Time : 2018/9/25 11:06
# @Author : Tangweeiyang
# @File : weixinSender.py
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import QIcon,QFont
import sys
import datetime
import time
import itchat
import threading
from tkinter import messagebox
class FriendsList(QThread):
sinOut = pyqtSignal(str)
# 自定义信号,执行run()函数时,从相关线程发射此信号
def __init__(self):
super().__init__()
def run(self):
itchat.auto_login(hotReload=True)
friendList = itchat.get_friends()
for each in friendList:
if len(each['RemarkName']) < 2: #如果 备注名为空,则用微信昵称
self.sinOut.emit(each['NickName'])
else:
self.sinOut.emit(each['RemarkName'])
class sendMessage(QThread):
def __init__(self,message,name,time):
super().__init__()
self.message=message
self.name=name
self.time=time
def run(self):
timer = threading.Timer(self.time,self.send)
timer.start()
def send(self):
itchat.auto_login(hotReload=True)
sender = itchat.search_friends(self.name)[0]['UserName']
itchat.send(self.message, toUserName=sender)
itchat.send(self.message, toUserName='filehelper')
messagebox.showinfo('消息','发送成功')
class weixinSender(QListWidget):
def __init__(self):
super().__init__()
self.Ui()
# self.dataProduce()
def Ui(self):
self.year_label = QLabel('年')
self.year=QLineEdit()
self.month_label=QLabel('月')
self.month=QLineEdit()
self.day_label=QLabel('日')
self.day=QLineEdit()
self.friendList_lable=QLabel('好友')
self.friendList=QComboBox()
self.hour_label = QLabel('时')
self.hour = QLineEdit()
self.min_label = QLabel('分')
self.min = QLineEdit()
self.second_label = QLabel('秒')
self.second = QLineEdit()
self.text=QTextEdit() #文本域
self.listbt = QPushButton('获取好友列表')
self.OKbt=QPushButton('定期发送')
grid = QGridLayout()
grid.setSpacing(10) # 创建标签之间的空间
grid.addWidget(self.year_label,1,1)
grid.addWidget(self.year,1,0)
grid.addWidget(self.month_label,1,3)
grid.addWidget(self.month,1,2)
grid.addWidget(self.day_label,1,5)
grid.addWidget(self.day,1,4)
grid.addWidget(self.friendList_lable,1,6,2,1)
grid.addWidget(self.friendList,1,7,2,3)
grid.addWidget(self.hour_label,2,1)
grid.addWidget(self.hour,2,0)
grid.addWidget(self.min_label,2,3)
grid.addWidget(self.min,2,2)
grid.addWidget(self.second_label,2,5)
grid.addWidget(self.second,2,4)
grid.addWidget(self.text,3,0,4,10)
grid.addWidget(self.listbt,7,5,1,2)
grid.addWidget(self.OKbt,7,7,1,2)
self.setLayout(grid)
self.friendList.addItem('好友1')
self.friendList.addItem('好友2')
self.text.setFont(QFont("楷体",12,QFont.Normal))
self.OKbt.clicked.connect(self.send)
self.listbt.clicked.connect(self.dataProduce)
self.setGeometry(300, 300, 500, 300)
self.setWindowTitle('定时发送消息')
self.setWindowIcon(QIcon('weixinIcon.jpg')) #窗口图标
self.show()
def dataProduce(self):
now=time.localtime()
self.year.setText(str(now.tm_year))
self.month.setText(str(now.tm_mon))
self.day.setText(str(now.tm_mday))
self.hour.setText(str(now.tm_hour))
self.min.setText(str(now.tm_min))
self.second.setText(str(now.tm_sec))
self.friendList.clear()
self.thread=FriendsList()
self.thread.sinOut.connect(self.slotAdd)
self.thread.start()
def slotAdd(self,name):
self.friendList.addItem(name)
def send(self):
self.target = datetime.datetime(int(self.year.text()),int(self.month.text()),int(self.day.text()),int(self.hour.text()),int(self.min.text()),int(self.second.text()))
self.now = time.time()
self.delay_time = self.target.timestamp() - self.now
self.sendThread=sendMessage(self.text.toPlainText(),self.friendList.currentText(),self.delay_time)
self.sendThread.start()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = weixinSender()
sys.exit(app.exec_())
程序运行步骤说明:
1. 将代码复制并粘贴后运行,界面显示如图(用户可将程序中的默认图标替换为自定义图片)。

2. 点击“获取好友列表”按钮,首次运行时会弹出微信网页版登录二维码(后续运行若itchat记录了登录状态,则只需在手机微信上点击确认登录即可)。使用手机微信扫描二维码完成登录。时间框中会显示当前系统时间,用户可将其修改为设定的发送时间(若设定的时间已过,消息将立即发送)。在下拉列表中选择目标好友(若好友设置了备注则显示备注名,否则显示微信昵称)。在下方文本框中输入要发送的内容,目前仅支持纯文字消息,不支持图片。
最后一步,点击“定期发送”按钮,即可等待好友收到消息。程序中默认设置了“文件助手”也会接收该条消息,用户可根据需要选择删除此设置。
最终运行效果如图所示。

以上关于python3+pyqt5+itchat微信定时发送消息的方法即为全部内容,希望能对读者有所帮助,也欢迎大家继续支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













