如何将动态数据添加到 QML 表

2023-12-22

我正在尝试从 Python 将行添加到表中。我正在使用用 QML 描述的 TableView。

我不知道如何将模型添加到表中,除非模型也在 QML 中。但我不知道如何向模型添加值。

import sys
from PyQt5.QtCore import QAbstractTableModel, QObject, QUrl
from PyQt5.QtQml import QQmlApplicationEngine
from PyQt5.QtQuick import QQuickView
from PyQt5.QtWidgets import QApplication



myApp = QApplication(sys.argv)

engine = QQmlApplicationEngine()
context = engine.rootContext()
context.setContextProperty("main", engine)

engine.load('users.qml')

mainWin = engine.rootObjects()[0]

# Add items
userTable = mainWin.findChild(QObject, "userTable")
tableModel = mainWin.findChild(QObject, "libraryModel")
tableModel.setData(tableModel.index(0), "one")
tableModel.setData(tableModel.index(1), "one")

mainWin.show()

sys.exit(myApp.exec_())

用户.qml

import QtQuick 2.3
import QtQuick.Controls 1.2

ApplicationWindow {
    ListModel {
        id: libraryModel
        objectName: "libraryModel"
        ListElement {
            title: "A Masterpiece"
            author: "Gabriel"
        }
        ListElement {
            title: "Brilliance"
            author: "Jens"
        }
        ListElement {
            title: "Outstanding"
            author: "Frederik"
        }
    }

    TableView {
        objectName: "userTable"
        anchors.fill: parent
        TableViewColumn {
            role: "title"
            title: "Title"
        }
        TableViewColumn {
            role: "author"
            title: "Author"
        }
        model: libraryModel
    }
}

Edit

tableModel.append({'author': 'one', 'title': 'two'})

builtins.TypeError: unable to convert argument 0 of 

QAbstractListModel.append from 'dict' to 'QQmlV4Function*'

由于尚未有人回答该问题,我建议您使用解决方法: 在 qml 中创建一个带有两个参数的 javascript 函数,并将元素直接从 QML 文件添加到表中。

(显然你必须首先从 python 调用该函数,但这只是小菜一碟......)

附:如果您想展示示例,请在评论中告诉我:]

编辑:添加代码

import QtQuick 2.3
import MyApplication 1.0

QPythonBinding{
id: binding
signal addElement(string param1, string param2)
    onAddElement: {
        myModel.append({"key1" : param1, "key2" : param2})
    }
}

现在Python代码

class QPythonBinding(QQuickItem):
    def __init__(self, parent=None):
        super(QPythonBinding, self).__init__(parent)

    addElement = pyqtSignal(str, str)   #you call it like this  - addElement.emit("name", "value")


if __name__ == '__main__':
    import sys
    app = QGuiApplication(sys.argv)

    qmlRegisterType(QPythonBinding, "MyApplication", 1, 0, "QPythonBinding")
    view = QQuickView()

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

如何将动态数据添加到 QML 表 的相关文章

  • 需要根据数据框中的行号应用不同的公式

    我正在努力在数据框中找到某种移动平均值 该公式将根据正在计算的行数而变化 实际场景是我需要计算Z列 Edit 2 以下是我正在使用的实际数据 Date Open High Low Close 0 01 01 2018 1763 95 176
  • 按每个元素中出现的数字对字符串列表进行排序[重复]

    这个问题在这里已经有答案了 我有一个脚本 其目的是对不断下载到服务器上的空间数据集文件进行排序和处理 我的列表目前大致如下 list file t00Z wrff02 grib2 file t00Z wrff03 grib2 file t0
  • 在 Python 中延迟转置列表

    所以 我有一个延迟生成的可迭代的三元组 我试图弄清楚如何将其转换为 3 个可迭代对象 分别由元组的第一个 第二个和第三个元素组成 然而 我希望这件事能懒惰地完成 所以 举例来说 我希望 1 2 3 4 5 6 7 8 9 将变成 1 4 7
  • 我可以同时打开两个 Tkinter Windows 吗?

    可以同时打开2个窗口吗 import tkinter as Tk import random import math root Tk Tk canvas Tk Canvas root background image Tk PhotoIma
  • 在多核上运行 python 线程

    我知道Python 2 7不允许在不同的内核上运行多个线程 你需要使用multiprocessing模块以实现某种程度的并发性 我正在看concurrent futuresPython 3 4 中的模块 是否使用ThreadPoolExec
  • 将列表值转换为 pandas 中的行

    我有数据帧 其中一列具有相同长度的 numpy ndarray 值 df list 0 Out 92 array 0 0 0 0 29273096 0 30691767 0 27531403 我想将这些列表值转换为数据框并从 df iloc
  • lmfit模型拟合然后预测

    我正在领养lmfit进行曲线拟合并使用拟合模型进行预测 然而下面的代码并没有达到我想要的效果 能否请你帮忙 谢谢 import numpy as np from lmfit import Model def linearModel x a0
  • cxfreeze virtualenv 中缺少 distutils 模块

    从 python3 2 项目运行 cxfreeze 二进制文件时 我收到以下运行时错误 project dist project distutils init py 13 UserWarning The virtualenv distuti
  • matplotlib:渲染到缓冲区/访问像素数据

    我想使用 matplotlib 生成的图作为 OpenGL 中的纹理 到目前为止 我遇到的 matplotlib 的 OpenGL 后端要么不成熟 要么已经停止使用 所以我想避免使用它们 我当前的方法是将图形保存到临时 png 文件中 并从
  • 如何在Python中手动对数字列表进行排序?

    规格 Ubuntu 13 04 Python 3 3 1 背景 Python的初学者 遇到了这个 手动排序 问题 我被要求做的事情 让用户输入 3 个数值并将它们存储在 3 个不同的变量中 不使用列表或排序算法 手动将这 3 个数字从小到大
  • argparse 不检查位置参数

    我正在创建一个脚本 它使用 argparse 接受位置参数和可选参数 我已经阅读了 Doug 的教程和 python 文档 但找不到答案 parser argparse ArgumentParser description script t
  • ImproperlyConfigured at / 不允许空静态前缀 - Django

    我正在使用 Django 上传 显示图像 该网站部署在 Heroku 上 下列的this https coderwall com p bz0sng教程我能够成功上传图像 但是 图像并未显示在模板中 然后我了解到我的 urls py 末尾应该
  • Pandas 中每列的曲线拟合 + 外推值

    我有一个包含大约 300 列的数据集 每一列都与深度相关 Pandas DataFrame 的简化版本看起来像这样 import matplotlib pyplot as plt import numpy as np import pand
  • 使用具有可变数量索引的 numpy mggrid

    如何将 numpy mgrid 与可变数量的索引一起使用 我在 github 上找不到任何人将其与硬编码值以外的任何内容一起使用的示例 import numpy as np np mgrid 1 10 1 10 this works fin
  • 如何将 pandas DataFrame 转换为 TimeSeries?

    我正在寻找一种将 DataFrame 转换为 TimeSeries 而不拆分索引和值列的方法 有任何想法吗 谢谢 In 20 import pandas as pd In 21 import numpy as np In 22 dates
  • python 中的 F 字符串前缀给出语法错误[重复]

    这个问题在这里已经有答案了 我有一个名为 method 的变量 它的值是 POST 但是当我尝试运行时print f method method is used 它不断在最后一个双引号处给出语法错误 我找不到它这样做的原因 我正在使用 py
  • 将二进制数据视为文件对象?

    在此代码片段 由另一个人编写 中 self archive是一个大文件的路径并且raw file是以二进制数据形式读取的文件内容 with open self archive rb as f f seek offset raw file s
  • 关闭正在运行代码的 IPython Notebook

    怎么运行的 我在 IPython Notebook 中运行了一些代码 一些迭代工作 我不小心关闭了正在运行的笔记本的浏览器 但回到 IPython 仪表板 我发现这个特定的笔记本尚未关闭 所以如果我再次打开笔记本 我会在它正在执行的代码前面
  • JSONDecodeError:额外数据:Python [重复]

    这个问题在这里已经有答案了 我使用以下代码从文件加载 json file file name obj list with open file as f for json obj in f obj list append loads json
  • 美丽的汤刮 - 登录凭据不起作用

    尝试使用登录凭据抓取页面 payload email gmail com password urls login url https www spotrac com signin url https www spotrac com nba

随机推荐

  • java中简单的“检查更新”库

    我正在使用 Eclipse RCP 但是 主要是因为我完全控制了 UI 删除了所有贡献 从头开始进行首选项等 我只是无法接受所包含的更新管理器的复杂性和需求 另外 我不使用插件功能 并且应用程序插件必须被提取 尽管我可以解决最后一个问题 不
  • 如何在 Laravel REST API 中使用 PUT 方法更新图像?

    我正在尝试使用 Laravel 构建一个 REST API 用户需要在其中更新他们的图像 但是 如果我在邮递员中使用 PUT 方法 它不会更新图像或将图像存储在指定文件夹中 如果我使用 POST 它会更新图像并保存在文件夹中 但它不会将文件
  • 更改日期格式化程序的区域设置

    我在我的应用程序中使用日期格式化程序来显示一些日期 但我希望该日期以阿拉伯语显示 所以我尝试更改格式化程序的区域设置 如下所示 var now new DateTime now var formatter DateFormat yMMMd
  • 如何使用 Asp.Net Core 实现基于权限的访问控制

    我正在尝试使用 aspnet core 实现基于权限的访问控制 为了动态管理用户角色和权限 create product delete product 等 它们存储在数据库中 数据模型就像https i stack imgur com CH
  • 如何加载外部文件并确保它首先在 JSFiddle 中运行?

    我有一个 JsFiddlehere http jsfiddle net deeptechtons rEzW5 2 并添加了通过外部 JS 资源部分加载的 Microsoft AJAX 如何判断 AJAX 文件加载完成后我的 JS 代码是否运
  • 单页应用程序 SEO 和无限滚动 AngularJS

    我们有一个网站 其提要类似于 pinterest 并计划将 jquery soup 重构为更结构化的内容 最有可能的两个候选者是 AngularJS 和 Backbone Marionette 该网站是用户生成的 主要以消费为导向 典型的
  • Symfony 表单字段属性empty_data 被忽略

    根据Symfony 2 4 文档 http symfony com doc current reference forms types text html empty data 任何不需要但提交时没有任何值的表单字段 选择字段的默认值或文本
  • Django 自定义用户模型密码未经过哈希处理

    我有自己的自定义用户模型 也有自己的管理器 models class MyUser AbstractBaseUser PermissionsMixin email models EmailField max length 255 uniqu
  • 仅将视口设置为横向模式

    我正在完成我的网站 除了一件小事之外 一切都运行良好 当我使用 iPhone 时 纵向模式完全符合我的要求 问题在于横向模式 我就像我已经设计了它 但我不喜欢最终版本 所以我需要插入另一行代码 但我不知道该怎么做 这就是我现在拥有的 现在我
  • 如何防止解析JSON时去掉小数点?

    如果你这样做 var parsed JSON parse myNum 0 0 然后当你看parsed myNum 你就得到了0 很公平 如果你这样做parsed myNum toString 你得到 0 基本上 我正在寻找一种方法将其转换为
  • 通过ReactJs代码运行shell命令

    我有一个文件存储在本地计算机中 并且也连接了一台打印机 因此 通常如果我想将文件打印到连接的打印机 我会在命令提示符中运行以下命令 cd
  • xCode - UIVisualEffectView 动画

    我在制作 VisualEffetView 动画时遇到问题 这是我声明它的代码 UIBlurEffect blur UIBlurEffect effectWithStyle UIBlurEffectStyleLight effectView
  • JPA 搜索字符串、长整型和布尔型

    我有一个 Spring Boot 应用程序 有一个实体 Entity Table name user public class User private Long id private String name private Long sc
  • 订阅者类没有在事件上调用的公共方法

    使用绿色 Robot Eventbus 时出现错误 E AndroidRuntime 2537 Caused by de greenrobot event EventBusException Subscriber class com exa
  • 使用 RVM 时如何在所有 gemset 上安装 gem

    使用 RVM 时 有没有办法在系统中的所有 ruby 和 gemset 不仅仅是默认或系统 ruby 上安装 gem 您可以执行 rvm global do gem install gem name 全局安装 gem 每个 ruby 版本
  • 使用 MSBuild 自动构建 Delphi 2010 项目

    我正在寻找使用 MSBuild 编译我的 Delphi 2010 项目 但有些事情不对劲 我只是无法让 MSBuild 编译我的项目 我尝试了这个命令行 C Windows Microsoft NET Framework v4 0 3031
  • AngularJS:将照片作为多部分表单数据上传并发布并获取响应

    我想上传图像并将其发布到我的服务器 该服务器应该将图像进一步发布到某些 API 并获取其响应 我可能可以将视图与类似的东西一起使用
  • 重新启动后,图库中图像的权限会丢失

    我的应用程序允许用户从图库或其他位置查看一些选定的图像 我通过以下方式请求图像的 Uri Intent photoPickerIntent new Intent Intent ACTION PICK photoPickerIntent se
  • Android 上出现“ 已恢复时意外恢复”消息是怎么回事?

    我的几个 Android 应用程序在 logcat 输出中显示以下类型的消息 I UsageStats 59 Unexpected resume of com totsp test while already resumed in com
  • 如何将动态数据添加到 QML 表

    我正在尝试从 Python 将行添加到表中 我正在使用用 QML 描述的 TableView 我不知道如何将模型添加到表中 除非模型也在 QML 中 但我不知道如何向模型添加值 import sys from PyQt5 QtCore im