如何在 Python 3 中以指定的时间间隔最好地使用 reload/refresh GTK table 数据和 UI?

How to best reload/refresh GTK table data & UI at specified intervals in Python 3?

我用 GTK/Python3 构建了一个小应用程序,目前运行良好。我是 Python 的新手,所以请原谅所提供代码片段中的任何不足 syntax/formatting/logic。

启动时,main() 会调用位于名为 table.py 的单独文件中的两个函数。这些函数负责从预先确定的字符串数组 (create_column_headers()) 创建 table 列 headers,另一个负责从 API 创建 table 行值回应 (create_row_values)

我正在寻找 best/correct 方法来每隔 x 秒更新在 create_row_values 中创建的 table/data,以便 table UI使用最新的 API 响应值更新。

main.py

import gi
import table
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk


class MainWindow(Gtk.Window):
    def __init__(self):
        Gtk.Window.__init__(self, title="Crypto Widget")
        table.create_column_headers(self)
        table.create_row_values(self)


win = MainWindow()
win.connect("destroy", Gtk.main_quit)
win.show_all()
Gtk.main()

table.py

import gi
import cmc_api
import const
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk


def create_row_values(self):
    for i, d in enumerate(cmc_api.get_data()['data']):
        self.list_store.append([
            f"{d['name']}",
            f"{d['symbol']}",
            "${:,.4f}".format(d['quote']['USD']['price']),
            f"{round(d['quote']['USD']['percent_change_24h'], 2)}",
            f"{round(d['quote']['USD']['percent_change_7d'], 2)}",
            "${:,.2f}".format(d['quote']['USD']['market_cap']),
            "${:,.2f}".format(d['quote']['USD']['volume_24h']),
            "{:,.2f}".format(d['circulating_supply'])
        ])


def create_column_headers(self):
    self.list_store = Gtk.ListStore(str, str, str, str, str, str, str, str)
    tree_view = Gtk.TreeView(model=self.list_store)
    [tree_view.append_column(Gtk.TreeViewColumn(c, Gtk.CellRendererText(), text=i))
        for i, c in enumerate(const.column_headers)]

    self.add(tree_view)

重申问题:如何让 table 的行值每 x 秒更新一次 - 从而用 [=46] 结果的最新值更新 UI =]打电话?

如果您有任何建议或可以指出正确的方向,请告诉我!

您可以使用 API 例如 GLib.timeout_add_seconds().

在提供的回调中,您可以获取最新结果并更新列表存储。只要你以return True结尾,回调会在x秒后再次调用。