中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python3+pyqt5+itchat微信定時發送消息的方法

發布時間:2020-10-13 15:55:57 來源:腳本之家 閱讀:184 作者:weiyang_tang 欄目:開發技術

編這個程序是想過節過年,一些重要的紀念日,給親戚好友發祝福之類的,但要凌晨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.代碼復制粘貼完畢后,運行,界面如圖(可以將程序中的圖標改成你喜歡的圖片)

python3+pyqt5+itchat微信定時發送消息的方法

2.點獲取好友列表按鈕,第一次會彈出微信網頁版登錄的二維碼(第二次運行,itchat會記錄你登錄記錄,只需要點擊你手機微信的確認登錄的按鈕),用手機微信掃描登錄即可.時間框里會顯示當前的時間,你改成設定時間發送即可(若約定時間已經過了,則消息會立即發送),在好友的下拉列表里選擇你要發送的好友(如果好友有備注,則顯示備注,否則顯示微信昵稱),在下面的文本框輸入你想要發送的消息,目前只支持文字,不支持圖片

最后一步,點擊定期發送按鈕,靜待好友收到消息,并且我設置了文件助手也會收到這條消息,不過你也可以刪除.

最后的效果圖

python3+pyqt5+itchat微信定時發送消息的方法

以上這篇python3+pyqt5+itchat微信定時發送消息的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

博客| 博乐市| 盖州市| 德格县| 灵璧县| 茌平县| 海城市| 都江堰市| 福清市| 城市| 睢宁县| 云南省| 江都市| 泌阳县| 高要市| 泸水县| 手机| 安远县| 忻城县| 乃东县| 吉隆县| 仁化县| 防城港市| 临湘市| 莒南县| 上杭县| 和龙市| 葫芦岛市| 资讯| 抚远县| 扎囊县| 南靖县| 古浪县| 石棉县| 东辽县| 若羌县| 长泰县| 吴川市| 太原市| 阳谷县| 信阳市|