Python 如何使用cx\u Freeze将pyqt5程序和qml打包成exe
我用Python和QML编写了一些代码。我想把它打包成一个.exe,但我有一些问题。这是我的密码: main.qmlPython 如何使用cx\u Freeze将pyqt5程序和qml打包成exe,python,python-3.x,qml,cx-freeze,pyqt5,Python,Python 3.x,Qml,Cx Freeze,Pyqt5,我用Python和QML编写了一些代码。我想把它打包成一个.exe,但我有一些问题。这是我的密码: main.qml import QtQuick 2.2 import QtQuick.Controls 1.1 import QtQuick.Layouts 1.1 ApplicationWindow { visible: true width: 640 height: 480 title: qsTr("Hello World") signal tabAd
import QtQuick 2.2
import QtQuick.Controls 1.1
import QtQuick.Layouts 1.1
ApplicationWindow {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
signal tabAdded(variant c)
ColumnLayout{
anchors.fill: parent
TabView{
visible: true
id:tabview
Layout.fillHeight: true
Layout.fillWidth: true
}
Button{
text: "add tab"
onClicked:{
var c = Qt.createComponent("tab.qml");
tabview.addTab("tab", c);
var last = tabview.count-1;
tabview.getTab(last).active = true; // Now the content will be loaded
console.log(tabview.getTab(last).item);
}
}
}
}
main.py
import sys
from PyQt5.QtCore import QObject, QUrl, Qt
from PyQt5.QtWidgets import QApplication
from PyQt5.QtQml import QQmlApplicationEngine
from PyQt5.QtNetwork import *
if __name__ == "__main__":
app = QApplication(sys.argv)
engine = QQmlApplicationEngine()
ctx = engine.rootContext()
ctx.setContextProperty("main", engine)
engine.load('main.qml')
win = engine.rootObjects()[0]
win.show()
sys.exit(app.exec_())
import sys
from cx_Freeze import setup, Executable
base = None
if sys.platform == 'win32':
base = 'Win32GUI'
options = {
'build_exe': {
'includes': 'atexit'
}
}
executables = [
Executable('main.py', base=base)
]
setup(name='simple_PyQt5',
version='0.1',
description='Sample cx_Freeze PyQt5 script',
options=options,
executables=executables
)
setup.py
import sys
from PyQt5.QtCore import QObject, QUrl, Qt
from PyQt5.QtWidgets import QApplication
from PyQt5.QtQml import QQmlApplicationEngine
from PyQt5.QtNetwork import *
if __name__ == "__main__":
app = QApplication(sys.argv)
engine = QQmlApplicationEngine()
ctx = engine.rootContext()
ctx.setContextProperty("main", engine)
engine.load('main.qml')
win = engine.rootObjects()[0]
win.show()
sys.exit(app.exec_())
import sys
from cx_Freeze import setup, Executable
base = None
if sys.platform == 'win32':
base = 'Win32GUI'
options = {
'build_exe': {
'includes': 'atexit'
}
}
executables = [
Executable('main.py', base=base)
]
setup(name='simple_PyQt5',
version='0.1',
description='Sample cx_Freeze PyQt5 script',
options=options,
executables=executables
)
我使用了cx\u Freeze
来打包代码,但出现了以下错误:
Traceback (most recent call last):
"File "E"\python34\lib\sit-packages\cx_Freeze\initscripts\Console.py",
line 27,in <module>
exec(code,m.__dict__)
File"main.py",line 15,in <module>
IndexError: list index out of range
回溯(最近一次呼叫最后一次):
“文件“E”\python34\lib\sit packages\cx\u Freeze\initscripts\Console.py”,
第27行,在
执行官(代码、指令)
文件“main.py”,第15行,在
索引器:列表索引超出范围
我该怎么办?可能找不到qml文件。确保它位于setup.py文件的“include_files”中,并查看常见问题解答中的如何获取其位置。我的目录有4个文件--main.py、main.qml、tab.qml和setup.py,我修改了**设置。py**。我向i添加了
includefiles=['main.qml'、'main.py'、'tab.qml']
,但我工作不好。