PyQt5 实用小技巧汇总

Designer生成的ui转py文件

PyQt5安装后就会存在pyuic5命令。

pyuic5 -o 保存的py文件名.py 原ui文件名.ui

将qrc文件转py文件

pyrcc5 resource.qrc -o resource_rc.py

将py文件打包成exe文件

虚拟环境打包减少不必要的依赖环境。

Pyinstaller -F py_word.py 打包exe
 
Pyinstaller -F -w py_word.py 不带控制台的打包
 
Pyinstaller -F -w -i chengzi.ico py_word.py 打包指定exe图标打包

样式框架

安装

pip install pyqtdarktheme

使用

app = QtWidgets.QApplication(sys.argv)
app.setWindowIcon(QIcon("static/header.ico"))  # 设置窗口图标
app.setStyleSheet(qdarkstyle.load_stylesheet())

链接

  • https://github.com/5yutan5/PyQtDarkTheme#usage
  • https://qdarkstylesheet.readthedocs.io/en/latest/

将print重定向到textEdit中

class Stream(QObject):
    """【输出重定向】重定向控制台输出到文本框控件"""
    newText = pyqtSignal(str)

    # 任何定义了类似于文件write方法的对象可以指定给sys.stdout,所有的标准输出将发送到该方法对象上
    def write(self, text):
        self.newText.emit(str(text))
        QApplication.processEvents()

class Ui_MainWindow(object):

    def __init__(self):
        sys.stdout = Stream()
        sys.stdout.newText.connect(self.onUpdateText)

    def onUpdateText(self, text):
        """【输出重定向】重定向控制台输出到文本框控件"""
        cursor = self.textEdit.textCursor()
        cursor.movePosition(QTextCursor.End)
        cursor.insertText(text)
        self.textEdit.setTextCursor(cursor)
        self.textEdit.ensureCursorVisible()

主界面无响应方案

class Worker(QThread):
    timeout = pyqtSignal()

    def __init__(self):
        super(Worker, self).__init__()

    def run(self):
        while True:
            time.sleep(2)
            self.timeout.emit()

   def on_clicked(self):
        self.worker = Worker()
        self.worker.start()

资源文件打包

python-docx库中打开qrc中的word文件
python-docx库本身不支持直接从QRC(资源文件)中打开Word文件。python-docx主要用于创建和修改Word文档,而不是从应用程序资源文件(如Windows中的QRC)中读取文档。

如果你的意图是从一个应用程序的资源文件中读取Word文件,并且这个应用程序是用Qt写的,那么你可能需要使用PyQt或者PySide来操作QRC文件。

以下是一个使用PyQt5从QRC中读取文件的例子:

from PyQt5 import QtCore, QtWidgets
 
def read_word_from_qrc(qrc_path):
    # 初始化资源系统
    QtWidgets.QApplication([])
    # 加载QRC文件
    QtCore.QResource.registerResource(qrc_path)
 
    # 假设你的Word文件在QRC中的资源名为":/word_files/document.docx"
    resource_name = ":word_files/document.docx"
 
    # 从资源系统中读取文件数据
    data = QtCore.QResource(resource_name).data()
 
    # 如果你需要将数据转换为文件对象,可以使用如下方式
    from io import BytesIO
    file_obj = BytesIO(data)
 
    return file_obj

使用例子

qrc_path = 'path_to_your_resources.qrc'
word_file_obj = read_word_from_qrc(qrc_path)

使用python-docx处理文件对象

from docx import Document
doc = Document(word_file_obj)

Pyinstaller安装执行文件闪退

执行文件闪退
(1)问题描述:打包文件闪退

(2)问题分析:原因很多,具体分析

(3)解决方法:

在将miain.exe文件copy到根目录下后,直接cmd调出命令行,输入:main.exe,直接运行程序,会打印错误的原因,然后分析问题

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值