您好,登錄后才能下訂單哦!
編這個(gè)程序是想過節(jié)過年,一些重要的紀(jì)念日,給親戚好友發(fā)祝福之類的,但要凌晨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: #如果 備注名為空,則用微信昵稱 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ùn)行,itchat會(huì)記錄你登錄記錄,只需要點(diǎn)擊你手機(jī)微信的確認(rèn)登錄的按鈕),用手機(jī)微信掃描登錄即可.時(shí)間框里會(huì)顯示當(dāng)前的時(shí)間,你改成設(shè)定時(shí)間發(fā)送即可(若約定時(shí)間已經(jīng)過了,則消息會(huì)立即發(fā)送),在好友的下拉列表里選擇你要發(fā)送的好友(如果好友有備注,則顯示備注,否則顯示微信昵稱),在下面的文本框輸入你想要發(fā)送的消息,目前只支持文字,不支持圖片
最后一步,點(diǎn)擊定期發(fā)送按鈕,靜待好友收到消息,并且我設(shè)置了文件助手也會(huì)收到這條消息,不過你也可以刪除.
最后的效果圖
以上這篇python3+pyqt5+itchat微信定時(shí)發(fā)送消息的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持億速云。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。