@@ -3,12 +3,18 @@ Python+itchat+PyQt5实现的个人版微信--自动回复、防撤回、红包
3
3
4
4
一直在学习python,无意中看到了itchat这个包,感觉很有意思,简单实现了一个LowB版微信,给女朋友捉弄朋友用。其实没有什么难度,做的很简陋,这里做下记录。
5
5
6
+ [ 博客地址] ( https://blog.csdn.net/hyqwmxsh/article/details/82019571 )
7
+
6
8
环境:
7
- python3.6
8
- PyQt5 5.11.2
9
- itchat 1.3.10
10
- wordcloud 1.5.0
11
- matplotlib 2.1.2
9
+ * python3.6
10
+
11
+ * PyQt5 5.11.2
12
+
13
+ * itchat 1.3.10
14
+
15
+ * wordcloud 1.5.0
16
+
17
+ * matplotlib 2.1.2
12
18
13
19
代码主要包括四个部分:
14
20
@@ -21,10 +27,13 @@ matplotlib 2.1.2
21
27
* [ AutoReplyWechat.py] ( https://github.com/Mister5ive/weChatAutoReply/blob/master/AutoReplyWechat.py ) 相当于一个调度中心,包括main函数
22
28
23
29
24
- #登录
30
+ # 登录
31
+
25
32
这部分代码功能很简单,就是获取itchat的登陆二维码
26
33
27
- ##代码:
34
+
35
+ ## 代码:
36
+
28
37
29
38
from PyQt5.QtWidgets import QDialog,QLabel,QPushButton,QVBoxLayout,QApplication
30
39
from PyQt5 import QtGui
@@ -78,7 +87,8 @@ class LogWindow(QDialog):
78
87
79
88
80
89
81
- #itchat消息处理
90
+ # itchat消息处理
91
+
82
92
这部分代码主要是微信消息的获取和后续处理,全部基于itchat来实现,后面别的有趣的功能也应该在这里增加。
83
93
84
94
from PyQt5.QtCore import QThread, pyqtSignal
@@ -297,7 +307,9 @@ class ItchatThread(QThread):
297
307
298
308
run函数中,分别处理群和个人消息,关于itchat的api,具体可以参考官网说明。
299
309
300
- ###个人消息部分:
310
+
311
+ ### 个人消息部分:
312
+
301
313
302
314
调用get_head_img获取对方头像,并保存到本地。
303
315
如果是文本信息,聊天记录保存到本地文件log,然后存进一个list--msgHistory。上述list用来保存2min以内的聊天记录(2min以上无法撤回),用来实现防撤回功能。这里保存的信息主要包括创建时间,消息人昵称、备注、ID和内容。msgHistory因为只保存了最近2min的消息,所以要一直清理,否则会堆积太多内容。msgClear函数用来清理msgHistory,原理也很简单,当前时间跟最早的时间作差,大于120s即删除。
@@ -309,10 +321,14 @@ autoReply用来开启自动回复,通过Qt界面设置。自动回复调用了
309
321
310
322
最后调用auto_login,就可以获取二维码登录自己的微信了。这里注意,默认是调用电脑的看图软件打开二维码,或者可以在控制台利用字符显示。这里我想在qt界面显示,所以重写了qrCallBack,把图片数据发送给界面显示,loginCallBack负责通知界面登录状态。get_friends获取通讯录朋友信息,供界面使用。
311
323
312
- #主界面
324
+
325
+ # 主界面
326
+
313
327
这部分代码写的有点乱,其实没什么难度,主要是自己想实现的逻辑理清就ok了。
314
328
315
- ##代码:
329
+
330
+ ## 代码:
331
+
316
332
317
333
from PyQt5.QtWidgets import QApplication ,QWidget, QTabWidget,QTextBrowser,QTextEdit,QListWidgetItem,QCheckBox,QLabel,QPushButton,QVBoxLayout,QHBoxLayout,QGridLayout,QListWidget,QMenu,QSystemTrayIcon,QAction
318
334
from PyQt5.QtCore import pyqtSlot
@@ -822,7 +838,9 @@ QTabWidget建了三个页,基本是模仿的微信PC端。
822
838
两个趣功能是在网上看到的,感觉很有意思,云词功能调用了wordcloud包,很好玩。我做了下简单改进在界面展示出来。
823
839
824
840
825
- #调度部分
841
+
842
+ # 调度部分
843
+
826
844
这部分代码就算是指挥中心了,继承QThread,负责其他三个累的通信,很容易理解。
827
845
828
846
from PyQt5.QtWidgets import QApplication
@@ -964,7 +982,8 @@ if __name__ == '__main__':
964
982
965
983
966
984
967
- 参考链接:
985
+
986
+ # 参考链接:
968
987
969
988
[ https://www.jianshu.com/p/d042ff5f4457 ] ( https://www.jianshu.com/p/d042ff5f4457 )
970
989
0 commit comments