网上关于pyqt5的教程特别少,终于东拼西凑,做出一点东西出来,很简单的小应用,便于上手学习。
pyqt5的主文件代码如下,代码特别多,也没怎么细分。大家可以参考下。github地址
pyinstall打包的一点小技巧送给大家。
- 取消生成程序doc窗口使用命令
pyinstaller -F -i 图标路径 文件路径 --noconsole(取消dos)
- 如果生成的应用有图片文件,可以先把图片转化为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