qml文件放到qrc之后pyrcc编译为py
pyrcc x.qrc -o x_rc.py
python使用qrc(demo)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import datetime
import os
import sys
import threading
import time
import io
from PyQt5.QtCore import QUrl, QLocale, QObject, pyqtSignal, pyqtSlot, pyqtProperty,Qt
from PyQt5.QtGui import QColor,QGuiApplication
from PyQt5.QtQml import QQmlApplicationEngine, qmlRegisterType
from PyQt5.QtQuick import QQuickPaintedItem
from PyQt5.QtWidgets import QApplication, QMessageBox
from PyQt5.QtCore import QCoreApplication
from PyQt5.QtCore import qInstallMessageHandler, QtMsgType, qDebug
# 这里导入转换好的qrc
import x_rc.py
app = QGuiApplication(sys.argv)
locale = QLocale(QLocale.Chinese, QLocale.China)
QLocale.setDefault(locale)
engine = QQmlApplicationEngine()
engine.objectCreated.connect(
lambda obj, _: (
None, engine.quit) if not obj else 0)
engine.addImportPath('imports')
engine.load(':/qml/pages/Main.qml') ## 这里以:开头代表使用qrc内的资源,不要用Qurl包裹
qmlRootObject = engine.rootObjects()[0]
sys.exit(app.exec_())
设置界面图标
需要在qml代码中设置窗口显示后的图标
import QtQuick 2.12
import QtQuick.Controls 2.12
ApplicationWindow {
visible: true
width: 640
height: 480
title: qsTr("My Application")
icon: "qrc:/xxx.ico"
}
打包+设置exe图标
qml应用程序打包同样是用Qt自带的命令行(windeployqt),编译器是什么就选对应的命令行。qml应用程序打包比QtWidgets的命令多一句话,就是要指明qml文件们在Qt安装位置的路径(qmldir)。
pyinstaller -F/D[打包成一个文件/目录] -w/c[不带/带命令行] -i xxx.ico xxx.py