侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

python3+pyqt5+itchat微信定时发送消息的方法

Python  /  管理员 发布于 7年前   150

编这个程序是想过节过年,一些重要的纪念日,给亲戚好友发祝福之类的,但要凌晨0点才显得比较有诚意,可我又比较贪睡,常常忘了,所以就有了编个微信定时发送消息小程序.

运行环境:

python 3.x,不支持python2

准备工作

由于我用到了微信的接口,所以引入itchat

界面用了pyqt5

安装命令如下:

pip install PyQt5pip install itchat

代码部分

# -*- coding: utf-8 -*-# @Time  : 2018/9/25 11:06# @Author : Tangweeiyang# @File  : weixinSender.pyfrom PyQt5.QtCore import *from PyQt5.QtWidgets import *from PyQt5.QtGui import QIcon,QFontimport sysimport datetimeimport timeimport itchatimport threadingfrom tkinter import messageboxclass 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微信定时发送消息的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


  • 上一条:
    利用django+wechat-python-sdk 创建微信服务器接入的方法
    下一条:
    钉钉群自定义机器人消息Python封装的实例
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在python语言中Flask框架的学习及简单功能示例(0个评论)
    • 在Python语言中实现GUI全屏倒计时代码示例(0个评论)
    • Python + zipfile库实现zip文件解压自动化脚本示例(0个评论)
    • python爬虫BeautifulSoup快速抓取网站图片(1个评论)
    • vscode 配置 python3开发环境的方法(0个评论)
    • 近期文章
    • 在windows10中升级go版本至1.24后LiteIDE的Ctrl+左击无法跳转问题解决方案(0个评论)
    • 智能合约Solidity学习CryptoZombie第四课:僵尸作战系统(0个评论)
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2018-04
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2022-01
    • 2023-07
    • 2023-10
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客