Python 与 QML (Qt-Quick) 配合得很好吗? [关闭]

2024-01-31

我是 Qt-Quick 的初学者。 我不知道 Qt 是 QML 的基础。 而且我也不熟悉 C++,它又是 Qt 和 QML 的主要支持语言。 我知道 JS 可以在 QML 层本身执行很多逻辑。但如果我们需要与操作系统交互,那么我们就必须使用一些基本语言。由于我对 Python 很熟悉,所以我计划“QML-JS-Python“ 组合。

所以,我的问题:

  1. 对于高级应用程序和游戏开发,Python 和 Qt-Quick 能否携手并进?
  2. 我的组合三重奏 (QML-JS-Python) 是否足够好?
  3. 我是否需要学习 Qt 进行应用程序开发才能从 QML 与 Python 耦合?
  4. 如果 Qust 3 是,那么我应该学习完整的 Qt 还是只学习那几行作为 Python 和 QML 之间通信门的代码?

抱歉,如果我提出这些问题是愚蠢的。但我想听取建议和意见。

编辑:此组合 QML-JS-Python 的任何限制

提前致谢


在概念层面上,它们配合得很好。我编写了一个 python/qml/js/opengl 程序,它很好地结合了所有内容。那是使用 Qt4.7 和 PySide。

如果您只是使用 QML,则可以最大程度地减少需要接触的 Qt 数量(尽管一如既往,更多知识会让您更强大)。本质上,一旦你有了 qdeclarativeview,你的 Qt 工作就不再需要处理信号/槽了,这在 PySide 下是一种乐趣。我建议您可以使用 Python 和 QML 快速提高工作效率,而不必过多担心 Qt 方面的问题,并在必要时选择它。

根据经验,我建议您在自己的头脑中明确 Python 和 QML 之间的界限。我将 QML 限制在 GUI 逻辑上,这做得很好;实际上,QML 处理界面如何响应输入,然后将信号发送回主程序。它的工作原理有点像在 GUI 和程序的其余部分之间创建一个非常基本的、精简的界面,仅发出高级逻辑信号(而不是发送回点击,它会发送回一个信号,例如“打开处理”,GUI 将处理如何呈现该更改)。就我而言,这只是直接插入我的 MVC 框架,但您可以按照自己喜欢的方式进行操作。

不过,在这一切中,有一个很大的警告。 PySide 的开发相当停滞,目前不支持 Qt5 及其所有 QML 改进优点。关于如何支持它已经有各种讨论,但提交的实际代码并不多。

我相信 PyQt 支持 Qt5,但作为 GPL 或商业双重许可(PySide 是 LGPL,因此可以与封闭源代码一起使用)。我对 PyQt 没有任何经验,除此之外,PySide 几乎可以相互替代。

看起来我正在谈论将其用作MVVM http://en.wikipedia.org/wiki/Model_View_ViewModel.

(任何限制问题):整个 Qt 是通过 PySide 和 PyQt 公开的。这意味着您可以像在 C 中一样在 Python 中编写扩展。我编写了一个捕获鼠标滚动事件的小部件,这样我就可以从 Flickable 中窃取滚动。这是一个用 Python 创建的 QML 元素,尽管我还必须从 Python 加载它;我不太清楚如何创建一个可以从 QML 文档内部加载的扩展。当然,可以编写一个独立于主代码的 C 扩展,因此您仍然可以选择该选项。

Edit: PySide2 https://wiki.qt.io/Qt_for_Python现在已经有了并且支持Qt5。

Edit2:截至 2021 年,Pyside 现在被称为Python 的 QT https://www.qt.io/qt-for-python,并且一直支持到 QT6(包括 QT6)。请务必记下许可证。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 与 QML (Qt-Quick) 配合得很好吗? [关闭] 的相关文章

  • ssh 远程计算机并使用 pexpect 运行“ls-l”

    我想要ssh远程机器并运行ls l using pexpect 我是一名学习Python语言的系统工程师 没有编码知识 有人可以帮助我吗 提前致谢 My code import pexpect child pexpect spawn usr
  • Python dict 到 DataFrame Pandas - 级别

    几个月前 Romain X 在这个问题上帮了我很多忙 Python 字典到 DataFrame Pandas https stackoverflow com questions 32770359 python dict to datafra
  • 通过另一个指标数据框评估一个数据框

    我有一个源数据框input df PatientID KPI Key1 KPI Key2 KPI Key3 0 1 C602 C603 C601 NaN 1 2 C605 C606 C602 NaN 2 3 75 L239 C602 NaN
  • 在python中合并两个json对象

    我正在 python 中合并两个 json 我正在做 import json json obj json dumps a 1 2 json obj1 json dumps a 3 4 json obj json obj1 print jso
  • 将 3d NumPy 数组重塑为 2d NumPy 数组时遇到问题

    我正在研究图像处理问题 我的数据以 3 维 NumPy 数组的形式呈现 其中 x y z 条目是图像 z 的 x y 像素 数值强度值 有 100000 张图像 每张图像为 25x25 因此 数据矩阵的大小为 25x25x10000 我试图
  • 检查时间戳列是否在另一个数据帧的日期范围内

    我有一个数据框 df A 有两列 amin 和 amax 这是一组时间范围 我的目标是查找 df B 中的列是否位于 df A amin 和 amax 列中范围的任何行之间 df A amin amax amin amax 0 2016 0
  • 使用 scikit-learn 在朴素贝叶斯分类器中混合类别数据和连续数据

    我正在使用 Python 中的 scikit learn 开发分类算法来预测某些客户的性别 除此之外 我想使用朴素贝叶斯分类器 但我的问题是我混合了分类数据 例如 在线注册 接受电子邮件通知 等 和连续数据 例如 年龄 长度 会员资格 等
  • 如何在 Django Admin 中禁用事务?

    I used transaction non atomic requests for 被超越的save in Person model如下所示 store models py from django db import models fro
  • 在 Tkinter 中调整另一个小部件内的一个小部件的大小

    我正在开发穆斯堡尔光谱 化学 的模拟软件 但在设计 UI 时 我在使用父窗口小部件调整子窗口小部件的大小时遇到 了问题 当窗口最大化时 父框架会填充额外的空间 但子窗口小部件不会更改其大小 from Tkinter import impor
  • 更改散景图中选项卡的样式

    我想知道是否有办法更改散景图上生成的选项卡的属性 诸如增加文本字体 更改制表符宽度等更改 以下是用于生成具有两个选项卡的绘图的简单代码 from bokeh models widgets import Panel Tabs from bok
  • 使用 Pytest 捕获 SystemExit 消息

    我正在使用 pytest 编写测试 我遇到了一些函数抛出异常的情况SystemExit如果输入错误 终端上会显示一些错误消息 我想为以下情况编写测试SystemExit抛出并验证输出错误消息中是否有特定字符串 这是代码 def test v
  • matplotlib 中矩形面片之间存在不需要的空间

    以下代码绘制两个红色矩形 红色矩形应该彼此相邻 之间没有空间 在 python 图中 这是可以的 在导出的 pdf 中 矩形之间有一个细长但明显的空白 有什么方法可以解决这个问题吗 import matplotlib pyplot as p
  • Pygame 旋转射击

    我和几个朋友一直在编写一种有趣的新射击机制 为了让它发挥作用 我们需要朝玩家面对的方向射击 Sprite 正在使用 Pygame Transform Rotate 进行旋转 我们怎样才能找到一个角度 然后朝那个方向发射子弹呢 这是我们的精灵
  • 如何在 django 中发出 post 请求后获取表单的名称?

  • 深度学习——一些关于caffe的幼稚问题

    我试图了解 caffe 的基础知识 特别是与 python 一起使用 我的理解是模型定义 比如给定的神经网络架构 必须包含在 prototxt file 当您使用数据训练模型时 prototxt 您将权重 模型参数保存到 caffemode
  • 我以为 Python 通过引用传递了所有内容?

    采取以下代码 module functions py def foo input new val input new val module main py input 5 functions foo input 10 print input
  • 在IPython笔记本中自动播放声音

    我经常在 IPython 笔记本中运行长时间运行的单元 我希望笔记本在单元完成执行时自动发出蜂鸣声或播放声音 有没有办法在 iPython 笔记本中执行此操作 或者我可以在单元格末尾放置一些命令来自动播放声音 我正在使用 Chrome 如果
  • 在 kivy 中嵌套小部件

    我正在尝试在 kivy 中制作一个界面 我认为即使在完成教程之后 我仍然不了解自定义小部件以及如何对它们进行层次结构的一些基本知识 我认为我有更多的盒模型 html 思维方式 因此小部件嵌套在本机 GUI 中的方式对我来说仍然有点陌生 一些
  • 使用 Python PuLP 混合整数规划的时间限制

    我一直在使用PuLP http pythonhosted org PuLP 解决我感兴趣的特定混合整数线性规划 MIP 但是 随着问题规模的增长 PuLP 花费的时间太长 我希望能够运行求解器一段时间 并在需要很长时间的情况下提前终止它 并
  • Python tkinter:在组合框中使用“文本变量”似乎没用

    使用textvariable在 tkinter 中创建组合框时的属性似乎完全没用 有人可以解释一下目的是什么吗 我查看了 Tcl 文档 它说textvariable用于设置默认值 但看起来在 tkinter 中您只需使用 set方法来做到这

随机推荐

  • 使用 std::function 进行隐式转换[重复]

    这个问题在这里已经有答案了 可能的重复 为什么我的 C 编译器无法推导出 boost 函数的模板参数 https stackoverflow com questions 5871044 why cant my c compiler dedu
  • 如何使用 git repack -a -d --深度=250 --window=250

    我见过git gc aggressive prune and git repack a d depth 250 window 250建议用于减小不需要较长本地历史记录的本地 git 文件夹的大小 从我的阅读看来git repack是首选 有
  • 在maven多模块包中创建JAR文件作为聚合

    我有以下架构 现在 如果我正在创建父子关系并首先构建子项 然后构建父项 那么它会正常工作
  • 如何从 Java 9 中的另一个模块获取 ResourceBundle?

    我有两个模块 模块 a 和模块 b 模块 a 具有属性文件 com foo texts en properties 模块 a 导出com foo包裹 在 module b 中我想获取这个资源 为此 我在 module b 中执行以下操作 M
  • 仅使某一部分可滚动,而不是整个页面

    我正在开发一个项目 其中一个部分通过从数据库请求数据来填充元素 因此其中的元素数量变化很大 棘手的部分是 我们的设计基于这样的想法 不必在页面上滚动 而是在必要时在部分上滚动 我想用overflow在这些部分就足够了 但它没有给我预期的结果
  • 分割视图控制器不作为根视图控制器

    我有一个应用程序需要用户LOG IN 用户登录后 我想使用分割视图控制器来显示数据 诀窍是 苹果不希望我推动SplitViewController 因为他们希望它成为根视图控制器 从我的角度来看 这是可以的 但我需要用户先登录 任何人都知道
  • 如何在 QtCreator 中重命名文件 .h .cpp

    如何在QtCreator中重命名源文件 我已经更改了类的名称 但我没有看到更改它包含的文件的选项 我使用的是2 7 0版本 如果您使用 qmake 重命名很容易 在 项目 左侧面板中找到您的文件 然后在上下文菜单中选择 重命名 Qt Cre
  • Visual Studio 在字符类中查找并替换右方括号 ]

    我想创建一个否定字符类来匹配像这样的方括号标签 方括号标签 问题是 字符结束了字符类 I tried 但当我运行它时出现语法错误 这是在查找和替换正则表达式引擎中 它与标准 NET 引擎略有不同 仅供参考 您忘记转义最后的结束括号
  • 使用奇怪的命名空间序列化 XML?

    问题 用于序列化此 XML 内容的类看起来如何
  • 导航栏大标题到小标题切换不流畅 iOS 13,粘性

    我有一个UINavigationController默认值为navigationBar prefersLargeTitles true 我将其切换为false when I push进入一个新场景 我们称之为 DetailsViewCont
  • 为什么使用 DFS 而不是 BFS 来查找图中的循环

    DFS 主要用于查找图中的循环 而不是 BFS 有什么理由吗 两者都可以查找节点是否已经存在 遍历树 图时访问过 深度优先搜索比广度优先搜索更节省内存 因为您可以更快地回溯 如果使用调用堆栈 实现起来也更容易 但这依赖于不会溢出堆栈的最长路
  • 登录 Twitter 后如何获取 oauth 令牌?

    登录 Twitter 后 我可以打印一些有用的数据 例如用户名和用户 ID 但是 OAuth 令牌始终为空 我怎样才能得到它 我需要将 OAuth 令牌发送到我的服务器 以便它可以验证用户确实是他所说的人 ACAccountStore ac
  • 使用 jQuery 淡入淡出背景图像?

    到目前为止 我已经尝试了很多方法 但没有成功 有任何想法吗 您可以淡化背景颜色 但不能淡化背景图像 解决这个问题的方法是将你的图像设置为 img 标签并默认隐藏它们display none 给出你的图像position absolute a
  • Outlook 邮件项目作为流

    是否可以退货MailItem直接作为Stream MailItem from Microsoft Office Interop Outlook 现在我找到了一个临时解决方案 首先保存一个MailItem到一个目录 打开它并将流返回到文件 然
  • 在 matlab 中,如何放大脚本中的绘图

    我想使用脚本放大情节 我只对水平约束缩放感兴趣 所以我想做一些类似的事情 p plot myData z zoom set z ZoomInToPoints 50 100 or p plot myData myZoom 50 100 因此
  • Qt:设置QMainWindow的大小

    我是Qt新手 所以我想知道是否有办法设置a的大小QMainWindow 例如 用户桌面的 70 我尝试了拉伸因子 但没有用 QWidget setFixedSize我认为有效 但仅限于像素数 在 QMainWindow 构造函数中的某个位置
  • Protractor - Jasmine - 将文件下载到相对路径

    我已阅读并遵循以下问题及其评论 答案 问题1 https stackoverflow com questions 27785731 cant stop protractor from displaying file download pro
  • 从 Python 文档字符串自动生成 GitHub Wiki 文档

    标题说明了一切 我的想法是为我的所有模块 类和函数提供文档字符串 并以某种方式通过 github wiki 很好地导航文档 此外 该文档应与最新代码同步 这意味着它应在推送时更新 重新生成 那可能吗 只需通过管道传输生成的输出docstri
  • __getitem__, __setitem__ 多个键

    我正在尝试创建一个类 它将数据存储在本地缓冲区中 并充当数据库的接口 我有以下代码 class Table object def init self tableName columnDict self tableName tableName
  • Python 与 QML (Qt-Quick) 配合得很好吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我是 Qt Quick 的初学者 我不知道 Qt 是 QML 的基础 而且我也不熟悉 C 它又是 Qt 和 QML 的主要支持语言 我