qt - qml+python 打包成exe
高洛峰
高洛峰 2017-04-17 15:17:38
[Python讨论组]

我写了一个非常简单的程序,使用的qml+python,使用cx_Freeze打包,然而出现了错误。
程序如下:

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_())

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 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;
        var tab=tabview.getTab(last)
        tab.active = true; // Now the content will be loaded
        tab.title=tab.item.name
        console.log(tabview.getTab(last).item);
        }
    }


        Button{
            text: "change tab"
            onClicked:{
        var tab=tabview.getTab(tabview.currentIndex)
                tab.title=tab.item.name

        }
    }

  }

}

setup.py

import sys
import os
from cx_Freeze import setup, Executable



base = None
if sys.platform == 'win32':
    base = 'Win32GUI'


includefiles =['main.qml','main.py','tab.qml']
packages = ['PyQt5.QtQml','PyQt5.QtNetwork']

options = {
    'build_exe': {

        'include_files':includefiles,
        'packages':packages
    }
}



executables = [
    Executable('main.py', base=base)
]

setup(name='myapp',
      version='0.1',
      description='Sample cx_Freeze PyQt5 script',
      options=options,
      executables=executables
      )

错误信息如下:

请问我该怎么做呢

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(1)
PHP中文网

报错提示给的很清楚了:
File "main.py",line 15,in
win = engine.rootObjects()[0]
IndexError:list index out of range
main.py第15行
索引超出范围,越界了。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号