python3+pyqt5+itchat微信定时发送消息的方法
作者:weiyang_tang 发布时间:2022-02-28 04:31:49
标签:python3,pyqt5,itchat
编这个程序是想过节过年,一些重要的纪念日,给亲戚好友发祝福之类的,但要凌晨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会记录你登录记录,只需要点击你手机微信的确认登录的按钮),用手机微信扫描登录即可.时间框里会显示当前的时间,你改成设定时间发送即可(若约定时间已经过了,则消息会立即发送),在好友的下拉列表里选择你要发送的好友(如果好友有备注,则显示备注,否则显示微信昵称),在下面的文本框输入你想要发送的消息,目前只支持文字,不支持图片
最后一步,点击定期发送按钮,静待好友收到消息,并且我设置了文件助手也会收到这条消息,不过你也可以删除.
最后的效果图
来源:https://blog.csdn.net/weiyang_tang/article/details/82886697
0
投稿
猜你喜欢
- 本文实例为大家分享了python图形用户接口实例的具体代码,供大家参考,具体内容如下运用tkinter图形库,模拟聊天应用界面,实现信息发送
- 作者的blog :http://www.planabc.net/老甘的《完全用CSS实现的中英文双语导航菜单》一文中使用“position:
- 其主要的优点便是无需再手工添加大量的信息了,可以指定对某一个站信息的截取进行批量录入,达到省时省力的目的。与其单纯的ASP小偷程序不同的是:
- 1.MySQL中并发和隔离控制机制Meta-data元数据锁:在table cache缓存里实现的,为DDL(Data Definition
- 无意中看到百度的页面代码,想到了一种声明写法,需要的朋友可以参考下。<!DOCTYPE html> <!--[if IE]
- 本文实例为大家分享了PHP变量传值赋值和引用赋值变量销毁的具体代码,供大家参考,具体内容如下<?php $a = 100
- 前言在上下文管理器协议的过程中,涉及到两个魔术方法__enter__方法 和 __exit__方法在python中所有实现了上下文管理器协议
- 本文实例讲述了Python 字符串、列表、元组的截取与切片操作。分享给大家供大家参考,具体如下:demo.py(字符串、列表、元组的截取):
- ancestor:祖先adjacent:相邻algorithm:运算法则anonymous box:无名盒子。例: anonymous in
- 前些日子有网友问:将ASP纪录集输出成n列的的表格形式显示的方法?现在写了一个,方便大家使用。'定义变量 Dim cn,r
- 本文实例讲述了PHP实现将浏览历史页面网址保存到cookie的方法。分享给大家供大家参考。具体如下:将浏览历史页面网址保存到cookie,大
- 总的来说,提高应用程序性能的最好的方法是发现应用的瓶径之所在,和数据库进行交互的性能无疑是决定应用程序性能的重要环节之一。因为ADO是当前最
- PHP 文件上传通过 PHP,可以把文件上传到服务器。本章节实例在 test 项目下完成,目录结构为:test|-----upload&nb
- ansible 简介ansible 是什么?ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、
- 本文探讨了提高MySQL 数据库性能的思路,并从8个方面给出了具体的解决方法。1、选取最适用的字段属性MySQL可以很好的支持大数据量的存取
- Python np.argmin()和np.argmax()函数按照axis的要求返回最小的数/最大的数的下标numpy.argmin(a,
- 本文实例为大家分享了php微信公众号获取位置信息的具体代码,供大家参考,具体内容如下<?php/** * wechat php tes
- 要实现的SQL查询很原始:要求从第一个表进行查询得到第二个表格式的数据,上网查询之后竟然能写出下面的SQL:代码如下:select * fr
- 这段后门代码可以隐藏在asp文件中,大家可以搜索一些特点的关键字,查看文件的修改日期,看看是不是有如下的代码。<%if re
- 除了3天就会失效的临时素材外,开发者有时需要永久保存一些素材,届时就可以通过本接口新增永久素材。最近更新,永久图片素材新增后,将带有URL返