一键获取所有微信聊天记录(附PyQT6入门实战)

想导出微信聊天记录,发现很多都要收费,我想着「这破功能还得收费?」,于是决定自己搞一个。

话接上篇:微信聊天记录导出为电脑文件实操教程(附代码)

后台有小伙伴反应,能不能搞个图形界面?方便分享给朋友一起用。

经过半天的摸索,终于搞出来一个还有点糙的工具,免费分享给大家。

本篇主要记录工具制作过程和使用方法,只需要工具的小伙伴,直接拉到文末自取~

1 界面搭建-PyQT

1.1 环境准备

用 Python 写的脚本程序,如何制作一个可视化界面呢?

选择有很多,比如 Python 的标准GUI库 Tkinter, 不过可以实现的功能比较简单。

考虑到后续可能还需要做的更复杂,所以决定选择主流的 PyQT 框架。

在 Python 中,PyQt 和 PySide 都是基于Qt框架的两个库,它们提供了丰富的控件和功能来创建复杂的GUI应用程序。

实在没弄明白,为啥同一个东西需要搞出不同的名称来?

选框架,当然是选最新且最稳定的了,主流的 PyQt 是 PyQt5,后来发现最新已经是第6版了,不过是 PySide6,相比 PyQt,使用了更宽松的许可证(LGPL)。

PySide6 提供了与PyQt相似的功能和API。PySide6的优点在于它基于Qt 6,具有高性能、丰富的组件库和强大的设计工具。同时,PySide6还提供了对触摸输入的支持,适用于开发触摸型的软件。

PySide6 和 PyQt5 的用法非常类似,如果熟悉 PyQt5 开发的小伙伴,上手 PySide6 将非常容易。举个最简单的例子,你就明白了:

# from PySide6 import QtWidgets
from PyQt5 import QtWidgets

综上,直接上 PySide6,pip 一键安装,非常方便:

pip install pyside6

1.2. 熟悉组件

PyQt 中最基础的组件就是这个 QtWidgets,由于我们这个工具主要就是一个窗口,所以直接一个类搞定.

新建一个文件 - main.py。 初始化 MainWindow 类时,把软件名称和 Logo 图像先放上去:

class MainWindow(QtWidgets.QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("微信信息提取工具")
        self.setWindowIcon(QtGui.QIcon('data/logo.png'))
        self.setupUI()

接下来,我们来编写 setupUI() 函数,把 UI 界面搭出来。

搭界面,首先需要布局,这时需要用到 PyQt 中的布局组件,这个工具我主要用到了两种布局组件:

  • QBoxLayout 盒子布局
  • QFormLayout 表单布局

最简单的,将布局分成上下两个部分:

def setupUI(self):        
   main_layout = QtWidgets.QVBoxLayout()
   self_groupbox = self.create_self_groupbox()
   chat_groupbox = self.create_chat_groupbox()
   self_groupbox.setStyleSheet(style)
   chat_groupbox.setStyleSheet(style)

   main_layout.addWidget(self_groupbox)
   main_layout.addWidget(chat_groupbox)
   bottom_text = QtWidgets.QLabel("by 公众号:猴哥的AI知识库")
   bottom_text.setAlignment(QtCore.Qt.AlignRight)
   main_layout.addWidget(bottom_text)
   self.setLayout(main_layout)

这时又发现,界面实在太丑了,能不能把样式美化一下?

查了写资料,发现 PyQt 中有一个 QSS 的概念,类似网页布局中的 CSS,熟悉 CSS 语法的同学,很容易看懂 QSS 。举一个例子,比如我要修改按钮的样式,可以在 style 中直接定义:

style = """
QPushButton {
    background-color: #4CAF50;  /* 按钮背景色 */
    color: white;               /* 按钮文字颜色 */
    border: 1px solid #4CAF50; /* 按钮边框 */
    border-radius: 10px;       /* 按钮边框圆角 */
    padding: 1px;              /* 按钮内边距 */
}
QPushButton:hover {
    background-color: #45a049;  /* 鼠标悬停时的背景色 */
}
QPushButton:pressed {
    background-color: #397d35;  /* 按钮被按下时的背景色 */
}
"""

基于上面这些内容,一个粗糙的界面雏形就出来了:

在这里插入图片描述

1.3. 封装功能

骨架搭建起来后,接下来需要为它装入灵魂!

说白了,就是把想要实现的具体功能编写成函数,然后和 对应的按钮 实现通信。

每个一个功能对应一个函数,比如我这里主要是四个功能:在这里插入图片描述

2. 工具打包-PyInstall

用 Python 写的脚本程序,如何制作成windows上的可执行文件,让其他人也能用上?

PyInstaller 是比较主流的一个工具,它可以将Python脚本和所有依赖项打包成一个可执行文件。

使用PyInstaller的基本步骤如下:

2.1 安装

Python 环境下安装 PyInstaller ,很简单:

pip install pyinstaller

2.2 打包

然后,命令行使用 PyInstaller 创建可执行文件:

pyinstaller --onefile main.py

注意:–onefile 选项会创建单个的exe文件,包含所有必需的文件。

如果创建失败,可以采用如下命令,重新打包:

pyinstaller --onefile --clean main.py

注意,打包这里很容易报错,比如我在打包到下面这一步时报错:

File "D:\miniconda3\envs\wechat\lib\dis.py", line 292, in _get_const_info
    argval = const_list[const_index]
IndexError: tuple index out of range

一开始还以为是 matplotlib 等相关的依赖出现问题,但发现不能根本解决问题。找了很久,终于在 pyinstall 官方仓库中找到一条解决方案:

修改这里报错的 “D:\miniconda3\envs\wechat\lib\dis.py” 文件,找到_unpack_opargs函数,在倒数第二行中添加 extended_arg = 0,修改后的代码如下:

def _unpack_opargs(code):
    extended_arg = 0
    for i in range(0, len(code), 2):
        op = code[i]
        if op >= HAVE_ARGUMENT:
            arg = code[i+1] | extended_arg
            extended_arg = (arg << 8) if op == EXTENDED_ARG else 0
        else:
            arg = None
            extended_arg = 0  # +
        yield (i, op, arg)

打包成功后,在你的当前目录下会多出一个文件夹 dist,里面有 main.exe,搞定!

可以分享出去了~

3. 工具使用教程

下面介绍下我们制作的 微信信息提取工具

双击 main.exe 打开后,会自动打开一个终端,后台输出的信息会显示在终端。
在这里插入图片描述

主要功能包含两个部分:

3.1 个人信息提取

首先确保微信电脑端已经打开。

然后,点击 提取个人信息 按钮,会将你的个人账号信息显示在右侧。同时,在你本地目录 output 文件夹下会多出一个文件self_info.json,保存的是你个人账号信息。

点击更新数据库,将你的微信数据库进行解码,控制台输出导出过程,稍等片刻,成功后,文本框中有提示~
在这里插入图片描述

3.2 聊天信息提取

首先需要将你账号中的所有联系人信息先提取出来,并保存到本地。
在这里插入图片描述

如上图所示,点击 联系人信息提取,右侧会给出保存路径,此时在你本地目录 output 文件夹下会多出一个文件contact.json,是一个列表,保存了所有联系人和群聊的基本信息。(如果提取失败,软件重启一下)
在这里插入图片描述
最后,选择输出类型(txt or json),输入你想要查找的 昵称 或者 备注名,然后点击 聊天记录提取 ,就可以一键提取出和该联系人的所有聊天记录。

写在最后

目前界面还比较糙,想要用 PyQT 搭建一个功能复杂且界面美观的应用,需要学的东西还是挺多的。

为了方便有需要的同学下载,我把打包后的软件上传到了网盘,公众号【猴哥的AI知识库】后台回复 微信信息提取工具, 直接领取免安装软件包~

如果本文对你有帮助,欢迎点赞收藏备用!

### 回答1: PyQt6是一个用于Python编程语言的GUI工具包,它允许开发人员在Windows、Mac和Linux等多个平台上创建功能强大的图形用户界面(GUI)应用程序。对于那些希望快速开发和实战的开发人员来说,PyQt6是一个非常有用的工具。 首先,你可以从官方网站上下载PyQt6的源码和文档。官方网站提供了最新的稳定版本和先前版本的下载选项。你可以根据自己的操作系统选择适当的版本进行下载。 在下载完成后,你可以按照文档中的说明进行安装。通常情况下,你只需要运行安装程序并按照步骤完成安装过程。一旦安装完成,你就可以开始在PyQt6中进行快速开发和实战PyQt6提供了丰富的GUI组件和工具,使得开发过程更加简单和高效。它包括了各种各样的控件,如按钮、文本框、标签、列表框等等,你可以通过简单的代码来创建和布局这些控件。此外,PyQt6还提供了各种丰富的功能,如绘图、动画、数据存储等,使得你可以轻松地开发出具有复杂功能和交互性的应用程序。 另外,PyQt6还提供了丰富的文档和示例代码。这些文档和示例代码将指导你如何正确地使用PyQt6的各种功能和组件。你可以通过阅读文档和运行示例代码来学习和掌握PyQt6的开发技巧和最佳实践。 总之,PyQt6是一个功能强大的GUI工具包,可以帮助你快速开发和实战。你可以从官方网站下载并安装PyQt6,并通过阅读文档和运行示例代码来学习和掌握它的使用方法。无论是初学者还是有经验的开发人员,PyQt6都是一个优秀的选择。 ### 回答2: 在进行PyQt6快速开发与实战之前,首先需要下载并安装PyQt6库。PyQt6是一个功能强大的Python框架,它提供了丰富的GUI编程工具和功能,可以帮助开发者快速构建界面丰富、交互性强的应用程序。 要下载PyQt6库,可以通过以下步骤进行: 1. 打开Python的官方网站(https://www.python.org/),并下载和安装Python解释器。请确保安装的是Python 3.x版本,因为PyQt6只支持Python 3。 2. 打开命令行终端(Windows可以使用Cmd、PowerShell等;Mac和Linux可以使用终端),输入以下命令安装PyQt6: ``` pip install PyQt6 ``` 这会自动从Python包索引下载并安装PyQt6库。如果你使用的是conda环境,也可以使用类似的命令进行安装。 3. 安装完成后,你就可以在Python脚本中导入并使用PyQt6库了。只需在脚本中加入以下语句即可: ```python from PyQt6.QtWidgets import QApplication, QMainWindow, QLabel # 在这里写下你的代码 ``` 这样,你就可以根据自己的需要使用PyQt6工具和功能进行开发了。 需要注意的是,PyQt6的下载速度可能会受到网络环境的影响。如果下载速度较慢,可以尝试更换源镜像,或者使用代理服务器来加快下载速度。 总之,通过以上步骤,你可以快速下载并安装PyQt6库,为实战开发提供强大的GUI编程工具和功能。希望这个回答对你有所帮助! ### 回答3: PYQT6是一种用于创建图形用户界面(GUI)应用程序的Python库。它基于了Qt框架,并提供了丰富的功能和工具,可以快速开发和部署可视化的应用程序。 要下载PYQT6快速开发与实战的内容,可以采取以下几个步骤: 1. 在互联网浏览器中搜索"PYQT6快速开发与实战",可以找到相关的网站或在线资源。 2. 访问可信赖的网站,如官方文档、编程论坛或云存储平台。 3. 在网站中搜索PYQT6快速开发与实战的下载链接或资源。 4. 点击下载链接,根据提示选择合适的版本和操作系统。 5. 下载完成后,可以解压缩文件并阅读其中的文档。通常会包含示例代码、教程和其他辅助材料。 6. 根据实际需要,可以在自己的开发环境中调用PYQT6库并开始实际的应用程序开发。 请注意,在下载PYQT6快速开发与实战的过程中要保持警惕,避免从不可靠的来源下载,以防止安全风险和恶意软件的感染。 最后,推荐在学习和使用PYQT6过程中,多查阅相关的文档和教程,充分利用PYQT6提供的功能和工具,以便更好地进行快速开发和实战
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值