python3+pyqt5+itchat微信定時(shí)發(fā)送消息的方法
編這個(gè)程序是想過(guò)節(jié)過(guò)年,一些重要的紀(jì)念日,給親戚好友發(fā)祝福之類(lèi)的,但要凌晨0點(diǎn)才顯得比較有誠(chéng)意,可我又比較貪睡,常常忘了,所以就有了編個(gè)微信定時(shí)發(fā)送消息小程序.
運(yùn)行環(huán)境:
python 3.x,不支持python2
準(zhǔn)備工作
由于我用到了微信的接口,所以引入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)
# 自定義信號(hào),執(zhí)行run()函數(shù)時(shí),從相關(guān)線程發(fā)射此信號(hào)
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: #如果 備注名為空,則用微信昵稱(chēng)
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('消息','發(fā)送成功')
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('時(shí)')
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('定期發(fā)送')
grid = QGridLayout()
grid.setSpacing(10) # 創(chuàng)建標(biāo)簽之間的空間
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('定時(shí)發(fā)送消息')
self.setWindowIcon(QIcon('weixinIcon.jpg')) #窗口圖標(biāo)
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_())
運(yùn)行步驟
1.代碼復(fù)制粘貼完畢后,運(yùn)行,界面如圖(可以將程序中的圖標(biāo)改成你喜歡的圖片)

2.點(diǎn)獲取好友列表按鈕,第一次會(huì)彈出微信網(wǎng)頁(yè)版登錄的二維碼(第二次運(yùn)行,itchat會(huì)記錄你登錄記錄,只需要點(diǎn)擊你手機(jī)微信的確認(rèn)登錄的按鈕),用手機(jī)微信掃描登錄即可.時(shí)間框里會(huì)顯示當(dāng)前的時(shí)間,你改成設(shè)定時(shí)間發(fā)送即可(若約定時(shí)間已經(jīng)過(guò)了,則消息會(huì)立即發(fā)送),在好友的下拉列表里選擇你要發(fā)送的好友(如果好友有備注,則顯示備注,否則顯示微信昵稱(chēng)),在下面的文本框輸入你想要發(fā)送的消息,目前只支持文字,不支持圖片
最后一步,點(diǎn)擊定期發(fā)送按鈕,靜待好友收到消息,并且我設(shè)置了文件助手也會(huì)收到這條消息,不過(guò)你也可以刪除.
最后的效果圖

以上這篇python3+pyqt5+itchat微信定時(shí)發(fā)送消息的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
解決usageerror: line magic function "
這篇文章主要介紹了解決usageerror: line magic function "%%time" not found問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01
python中shell執(zhí)行知識(shí)點(diǎn)
在本篇文章里小編給大家分享的是關(guān)于python中shell執(zhí)行知識(shí)點(diǎn)內(nèi)容,需要的朋友們可以學(xué)習(xí)下。2020-05-05
Python的進(jìn)制轉(zhuǎn)換和ASCLL轉(zhuǎn)換你了解嗎
這篇文章主要為大家詳細(xì)介紹了Python的進(jìn)制轉(zhuǎn)換和ASCLL轉(zhuǎn)換,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-02-02
Python?np.where()的詳解以及代碼應(yīng)用
numpy里有一個(gè)非常神奇的函數(shù)叫做np.where()函數(shù),下面這篇文章主要給大家介紹了關(guān)于Python?np.where()的詳解以及代碼應(yīng)用的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08
django 發(fā)送郵件和緩存的實(shí)現(xiàn)代碼
這篇文章主要介紹了django 發(fā)送郵件和緩存的實(shí)現(xiàn)代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-07-07

