【问题标题】:Numpy Arrays and Gtk ListStoresNumpy 数组和 Gtk ListStores
【发布时间】:2016-04-14 02:36:14
【问题描述】:

我想讨论一些我必须为我的小项目做出的一般性决定。这主要与内存消耗有关,但也与数据完整性有关。

它是一个会计工具,有一个记录列表并计算一些财务数据,如打印账户、每月/每季度计算总和、资产负债表等...对于 GUI,我使用 GTK,因为许可证原因, 它比 QT 更免费,但在 Windows 和 MAC 下都可以使用。

我的一般方法是将记录列表存储在二维 numpy 数组中。要特别显示一个帐户,我只需要创建一个视图,它与原始数组共享内存。所以,它速度很快,而且不占用内存。

但要在 GTK3 中显示数据,我需要一个 ListStore。所以我的问题是:

  1. 要将数据从 numpy 数组复制到 ListStore 将 增加我的内存使用量?
  2. 如果我将数据表显示为“可编辑”,我必须管理一个 ListStore和numpy数组自动同步?
  3. 还有其他更优雅的方法来避免使用两个表(数组和 ListStore)吗?

【问题讨论】:

    标签: python arrays python-3.x numpy gtk3


    【解决方案1】:

    我不能 100% 确定是否可以使用 Python GTK 绑定,但 GtkListStoreGtkTreeModel 接口的实现。

    您可以通过实现其virtual methods 创建一个将您的 NumPy 数组代理为GtkTreeModel 的对象。例如:

    class MyListStore(object):
        def __init__(self, ndarray):
            self._ndarray = ndarray
    
        def do_get_column_type(self, index_):
            ...
    

    如果您想让表格可编辑,同步会有点棘手。至少,从数组同步到树模型很容易;如果您在 ndarray 以编程方式更改时发出 row-changed 信号,则更改将自动显示在您的 UI 中。反之则必须更加手动。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-30
      • 1970-01-01
      • 2021-11-24
      • 2018-06-02
      • 2020-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多