pyqt5 +pyinstall打造属于自己的桌面版程序(学习阶段)

本文分享了使用PyQt5制作桌面应用的学习过程,包括PyQt5的基础应用、多线程、与JS交互、结合爬虫、内嵌浏览器及CSS样式等,并提供PyInstaller打包应用的注意事项,如取消doc窗口生成、处理图片资源。项目代码已上传至GitHub。
摘要由CSDN通过智能技术生成

网上关于pyqt5的教程特别少,终于东拼西凑,做出一点东西出来,很简单的小应用,便于上手学习。
pyqt5的主文件代码如下,代码特别多,也没怎么细分。大家可以参考下。github地址
pyinstall打包的一点小技巧送给大家。

  1. 取消生成程序doc窗口使用命令
pyinstaller -F -i 图标路径   文件路径   --noconsole(取消dos)
  1. 如果生成的应用有图片文件,可以先把图片转化为py文件,然后在py文件里面引用即可下面上代码
import base64


def jpg_py(picture_names, py_name="imgs"):
    """
    将图像文件转换为py文件
    :param picture_name:
    :return:
    """
    write_data = []
    for index,picture_name in enumerate(picture_names):

        # paths = picture_name.replace('file:///','')
        # filename = "jpg_01-%s"%index
        open_jpg = open("%s" % paths, 'rb')
        b64str = base64.b64encode(open_jpg.read())
        open_jpg.close()
        with open('%s.py' % py_name, 'a+') as f :
        # 注意这边b64str一定要加上.decode()
            f.write('%s = "%s"\n' % (filename, b64str.decode()))



if __name__ == '__main__':
    pics = [r'C:/Users/zq/Desktop/Project/ico/ooopic_1548575226.ico']
    jpg_py(pics, 'memor555y_pic')  # 将pics里面的图片写到 memory_pic.py 中
    print("ok")

引用的代码如下

def get_pic(pic_code, pic_name):
    image = open(pic_name, 'wb')
    image.write(base64.b64decode(pic_code))
    image.close()
    return image

可以在程序最后用os.remove()方法移除掉就ok
这个小项目主要包含:

  • pyqt5多线程应用
  • pyqt5和js脚本交互
  • pyqt5和爬虫融合
  • pyqt5内嵌浏览器的初级入门
  • pyqt5页面css样式学习
    下面上一点图片
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    主文件代码如下,很多,慎重观看
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'hello.ui'
#
# Created by: PyQt5 UI code generator 5.11.3
#
# WARNING! All changes made in this file will be lost!
from pdf_word import parser_pdfs
from memory_pic import mg_ico
from memory_pic import start_jpg
from memory_pic import jpg_5
from pdf_str import readPDF
from get_ip import get_host_ip
from cs1 import html

from PyQt5 import QtCore, QtWidgets
from PyQt5.QtCore import QTimer, QDateTime
from PyQt5.QtGui import QIcon,  QPixmap, QFont
from PyQt5.QtWidgets import QApplication, QMessageBox, QWidget, QDateTimeEdit, QMainWindow, QLCDNumber, QDesktopWidget, \
    QFileDialog, QAction, QMenu, QSystemTrayIcon

from PyQt5.QtCore import QUrl

from PyQt5.QtWebEngineWidgets import QWebEngineView


import os
import sys
import base64


from spiders import spider_weath


##################################################
# 加载全局图片资源 函数                       #
#                                                #
##################################################
def get_pic(pic_code, pic_name):
    image = open(pic_name, 'wb')
    image.write(base64.b64decode(pic_code))
    image.close()
    return image

    ##################################################
    # 加载全局图片资源                        #
    #                                                #
    ##################################################



# 在这里使用图片 icon.ico

img_3 = get_pic(mg_ico, 'mg.ico')
img_st = get_pic(jpg_5, '01-5.jpg')
img_st = get_pic(start_jpg, 'start.jpg')






##################################################
# 唯一ui类                                        #
#                                                #
##################################################

class Ui_Dialog(QWidget):
    windowList = []
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        # Dialog.resize(1000, 950)

        Dialog.setGeometry(400, 50, 1000, 950)

        # Dialog.setDisabled(False)

        Dialog.setWindowOpacity(0.95)  # 设置窗口透明度
        # Dialog.setWindowFlag(QtCore.Qt.FramelessWindowHint)  # 隐藏边框
        # Dialog.setDisabled(True)
        # Dialog.WindowMinimizeButtonHint()
        Dialog.setStyleSheet("#Dialog{background:red;border-top:1px solid white;border-bottom:1px solid white;border-left:1px solid white;border-top-left-radius:10px;border-bottom-left-radius:10px;}")
        # Dialog.setAttribute(QtCore.Qt.WA_TranslucentBackground)  # 设置窗口背景透明
        self.cwd = os.getcwd()
        self.center()
        self.tabWidget = QtWidgets.QTabWidget(Dialog)
        self.tabWidget.setGeometry(QtCore.QRect(0, 0, 1000, 950))
        self.tabWidget.setObjectName("tabWidget")
        # QTableWidget.horizontalHeader().setSectionResizeMode(0, QHeaderView.Fixed)

        ##################################################
        # c创建一个tabwidget(上方工具栏)                         #
        #                                                #
        ##################################################
        self.tab = QtWidgets.QWidget()
        self.tab.setObjectName("tab1")

        self.tabWidget.setCurrentIndex(1)
        # self.tabWidget.showNormal()

        self.tab3 = QtWidgets.QWidget()
        self.tab3.setObjectName("tab3")
        # self.tab3.setLayout(self.tabWidget)

        self.tab4 = QtWidgets.QWidget()
        self.tab4.setObjectName("tab4")

        self.tab5 = QtWidgets.QWidget()
        self.tab5.setObjectName("tab5")

        self.tabWidget.addTab(self.tab, "")
        self.tabWidget.addTab(self.tab3, "")
        self.tabWidget.addTab(self.tab4, "")
        self.tabWidget.addTab(self.tab5, "")

        self.tabWidget.setDocumentMode(True)
        self.setAcceptDrops(True)

        ##################################################
        # 创建一个弹出框全局变量                             #
        #                                                #
        ##################################################
        self.msgBox = QMessageBox()  # 创建弹出框

        self.mongo = QtWidgets.QPushButton(self.tab)
        self.mongo.setGeometry(QtCore.QRect(10, 40, 130, 40))
        self.mongo.setObjectName("pushButton_mongo")

        self.jupy = QtWidgets.QPushButton(self.tab)
        self.jupy.setGeometry(QtCore.QRect(160, 40, 130, 42))
        self.jupy.setObjectName("pushButton_2")

        self.lineEdit_2 = QtWidgets.QLineEdit(self.tab)
        self.lineEdit_2.setGeometry(QtCore.QRect(10, 270, 451, 41))
        self.lineEdit_2.setObjectName("lineEdit_2")
        self.lineEdit_2.setStyleSheet('color:#BA55D3')

        self.lineEdit_3 = QtWidgets.QLineEdit(self.tab)
        self.lineEdit_3.setGeometry(QtCore.QRect(10, 220, 451, 41))
        self.lineEdit_3.setObjectName("lineEdit_3")

        self.base_str = QtWidgets.QPushButton(self.tab)
        self.base_str.setGeometry(QtCore.QRect(510, 220, 131, 41))
        self.base_str.setObjectName("pushButton_4")

        self.str_base = QtWidgets.QPushButton(self.tab)
        self.str_base.setGeometry(QtCore.QRect(510, 270, 131, 41))
        self.str_base.setObjectName("pushButton_5")

        self.textBrowser = QtWidgets.QTextBrowser(self.tab)
        self.textBrowser.setGeometry(QtCore.QRect(700, 0
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值