首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何与PySide2一起使用Felgo

如何与PySide2一起使用Felgo
EN

Stack Overflow用户
提问于 2020-11-27 04:45:08
回答 1查看 416关注 0票数 1

在编写python应用程序时,我希望使用Felgo工具包来扩展Qt的qml类型,但是一直遇到问题,而且没有很好的运气将其启动并运行。我很好奇,在python应用程序中编写qml时,其他人是否能够成功地使用Felgo库。如果是的话,你是如何做到的?

以下是我迄今所做的工作:

  1. 下载了Felgo并让它在QtCreator中工作(这里没有使用python )
  2. 创建了一个venv,pip将Pyside2安装到venv中。
  3. 创建了一个非常简单的qml文件,它使用Felgo组件和python文件来运行它。
代码语言:javascript
复制
//main.qml

import Felgo 3.0
import QtQuick 2.0

App {
    id: app
    AppText {
        text: "Hello World"
        anchors.centerIn: parent
    }
}
代码语言:javascript
复制
#main.py

import sys
import os

from PySide2.QtGui import QGuiApplication
from PySide2.QtQml import QQmlApplicationEngine


if __name__ == "__main__":
    app = QGuiApplication(sys.argv)
    engine = QQmlApplicationEngine()
    engine.load(os.path.join(os.path.dirname(__file__), "main.qml"))

    if not engine.rootObjects():
        sys.exit(-1)
    sys.exit(app.exec_())
  1. 由于Felgo不是随PySide2附带的,所以我复制从QT文件夹中安装的所有Felgo相关组件,并将它们粘贴到‘.\venv\Lib\site-packages\Pyide2\ qml’中,以加入标准qml组件的其余部分。这些是我抓取的文件夹和文件
  • C:\Qt\Qt\5.12.8\mingw73_64\qml\Felgo
  • C:\Qt\Qt\5.12.8\mingw73_64\qml\VPlay
  • C:\Qt\Qt\5.12.8\mingw73_64\qml\VPlayApps
  • C:\Qt\Qt\5.12.8\mingw73_64\qml\VPlayPlugins
  • C:\Qt\Qt\5.12.8\mingw73_64\qml\builtins.qmltypes
  1. 当我试图运行它时,我会得到这个错误。
代码语言:javascript
复制
QQmlApplicationEngine failed to load component
file:///C:/Users/jblos/PycharmProjects/Felgo/TestProject/main.qml:3:1: module "Felgo" is not installed

我是不是忘了什么?

编辑1:

在将Qt的版本Felgo与pyside2版本(pip安装pyside2==5.13.2)进行匹配(对我来说是5.13.2)之后,这解决了我所看到的几个问题。我不再看到"Felgo“没有安装。并解决了存在循环qml依赖问题的一些问题。

现在,该应用程序将在技术上运行,并“工作”,但没有任何主题出现。简单的按钮或导航条看起来与实时预览没有任何相似之处。python与Felgo实况预览

查看Felgo main.cpp示例应用程序,它们使用的是一个FelgoApplication类,它可能正在执行一些可能不会发生的设置或初始化?

代码语言:javascript
复制
// main.cpp from sample application

#include <QApplication>
#include <FelgoApplication>

#include <QQmlApplicationEngine>

// uncomment this line to add the Live Client Module and use live reloading with your custom C++ code
//#include <FelgoLiveClient>

int main(int argc, char *argv[])
{

    QApplication app(argc, argv);

    FelgoApplication felgo;

    // Use platform-specific fonts instead of Felgo's default font
    felgo.setPreservePlatformFonts(true);

    QQmlApplicationEngine engine;
    felgo.initialize(&engine);

    // Set an optional license key from project file
    // This does not work if using Felgo Live, only for Felgo Cloud Builds and local builds
    felgo.setLicenseKey(PRODUCT_LICENSE_KEY);

    // use this during development
    // for PUBLISHING, use the entry point below
    felgo.setMainQmlFileName(QStringLiteral("qml/Main.qml"));

    // use this instead of the above call to avoid deployment of the qml files and compile them into the binary with qt's resource system qrc
    // this is the preferred deployment option for publishing games to the app stores, because then your qml files and js files are protected
    // to avoid deployment of your qml files and images, also comment the DEPLOYMENTFOLDERS command in the .pro file
    // also see the .pro file for more details
    //felgo.setMainQmlFileName(QStringLiteral("qrc:/qml/Main.qml"));

    engine.load(QUrl(felgo.mainQmlFileName()));

    // to start your project as Live Client, comment (remove) the lines "felgo.setMainQmlFileName ..." & "engine.load ...",
    // and uncomment the line below
    //FelgoLiveClient client (&engine);

    return app.exec();
}
EN

回答 1

Stack Overflow用户

发布于 2020-12-06 13:20:13

我找到了这个链接,也许能帮到你。QML应用程序教程,使用python https://doc.qt.io/qtforpython/tutorials/qmlapp/qmlapplication.html

我对你的解决方案感兴趣。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65032211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档