1. pyqt5环境搭建
  2. 使用pyqt5写一个爬虫内容输入案例,包含内容滚动
  3. 使用pyinstaller导出exe文件

一. pyqt5环境搭建

基础环境准备

1. 创建虚拟环境conda create -n qtEnv python=3.8.5
2. 新建一个文件夹作为项目根目录D:\qtprojects\first_qt
3. 使用pycharm打开D:\qtprojects\first_qt,并配置好虚拟环境qtEnv
基础环境.png

pyqt5环境

1. 安装pyqt5

pip install pyqt5 -i https://pypi.douban.com/simple/
pip install pyqt5-tools -i https://pypi.douban.com/simple/

2. 把pyqt5配置到pycharm
点击File-->点击Settings-->Tools-->External Tools
(截图是已经配置好的样子,先不用管)
2022-09-20T08:37:17.png
先配置Qt Designer

Name:QtDesigner
program:designer.exe的安装路径(比如我的D:\software\anaconda\envs\qtEnv\Lib\site-packages\qt5_applications\Qt\bin\designer.exe)
parameter:不填
Working directory: $FileDir$

Qt Designer.png
再配置pyuic5

Name:pyuic5
Program:pyuic5.exe的安装路径(比如我的D:\software\anaconda\envs\qtEnv\Scripts\pyuic5.exe)
Arguments:$FileName$ -o $FileNameWithoutExtension$.py
Working directory:$FileDir$

pyuic5.png
最后配置pyrcc

Name:pyrcc
Program:pyrcc5.exe的安装路径(比如我的D:\software\anaconda\envs\qtEnv\Scripts\pyrcc5.exe)
Arguments:$FileName$ -o $FileNameWithoutExtension$_rc.py
Working directory:$FileDir$

pyrcc.png
到这里,pyqt5环境搭建就已经搭建好了,下面开始一个爬虫内容输出实战案例

二. 爬虫内容输出案例

1. 打开视图设计页面
2022-09-20T08:55:51.png
2. 通过拖拉组件,生成如图样式
2022-09-20T08:56:57.png
3. 样式生成代码
2022-09-20T08:58:14.png
4. 编写逻辑代码

import sys
import threading
import time

from PyQt5.QtCore import QTimer
from PyQt5.QtWidgets import QMainWindow, QApplication
from test import Ui_MainWindow
import requests


class Window(QMainWindow, Ui_MainWindow):
    def __init__(self):
        super(QMainWindow, self).__init__()
        self.setupUi(self)
        self.connect_signals()

    def connect_signals(self):
        self.btn_sure.clicked.connect(self.btn_sure_clicked)
        # self.btn_sure.clicked.connect(self.btn_sure_clicked)
        self.btn_cancel.clicked.connect(self.btn_cancel_clicked)

    def btn_sure_clicked(self):
        # address = self.input_address.text()
        # response = requests.get(address)
        url = "https://www.dongchedi.com/motor/searchapi/search_content_pc/?keyword={keyword}&offset={offset}&count=24&cur_tab=2&city_name=%E5%8C%97%E4%BA%AC&motor_source=pc_new&format=json&motor_search_type=0"

        def _slot1(text_edit, input_address):
            keyword = input_address.text()
            num = 0
            for i in range(10):
                offset = 8 + 24 * i
                response = requests.get(url.format(keyword=keyword, offset=offset))
                resp_json = response.json()
                data = resp_json.get("data")
                for item in data:
                    cell_type = item.get("cell_type")
                    if cell_type != 202:
                        continue
                    num += 1
                    title = item.get("group_cell").get("title")
                    text_edit.append(str(num) + ". " + title)

                # text_edit.append(input_address.text())  # 文本框逐条添加数据
                    text_edit.moveCursor(text_edit.textCursor().End)  # 文本框显示到底部
                    time.sleep(0.15)
        threading.Thread(target=_slot1, args=(self.text_edit, self.input_address)).start()

    def btn_cancel_clicked(self):
        self.text_edit.clear()


def main():
    app = QApplication(sys.argv)
    mywindow = Window()
    mywindow.show()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

5. 运行效果
2022-09-20T09:01:22.png
滚动核心逻辑
1、按下按钮pushButton,把单行文本框lineEdit里的内容循环不断的添加到多行文本展示框textBrowser。
2、必须要用线程做这件事,不然主程序会卡死。
3、必须添加sleep(),不然主程序会卡死。
4、用函数的闭包做这样的事情,效果很好。

def slot1(self):
    def _slot1(textBrowser,lineEdit):
        while True:
           textBrowser.append(lineEdit.text())   #文本框逐条添加数据
           textBrowser.moveCursor(textBrowser.textCursor().End)  #文本框显示到底部
           time.sleep(0.2)
    threading.Thread(target=_slot1,args=(self.textBrowser,self.lineEdit)).start()

三. exe文件导出

  1. 安装导出包pip install pyinstaller
  2. 执行导出命令pyinstaller -Fw main.py
  3. 稍后就会生成exe文件

2022-09-20T09:06:30.png

  1. 执行没有问题

2022-09-20T09:07:47.png

最后修改:2022 年 09 月 20 日
如果觉得我的文章对你有用,请随意赞赏