0

我有一个窗口应用程序,我试图在运行我的函数后每 x 秒刷新一次表。但是我找不到任何合适的方法来在应用程序的事件循环中重新运行该函数。这是我的代码,我试图重新运行的函数是 FLAS(我正在返回一个对象列表)。

flights = FLAS()

with dpg.window(width=785, height=600, no_collapse=True, no_move=True, no_title_bar=True, no_resize=True):
    with dpg.table(header_row=True, policy=dpg.mvTable_SizingFixedFit, row_background=True, reorderable=True,
                resizable=False, no_host_extendX=False, hideable=True,
                borders_innerV=True, delay_search=True, borders_outerV=True, borders_innerH=True,
                borders_outerH=True):
        dpg.add_table_column(label="Callsign", width_fixed=True)
        dpg.add_table_column(label="FIX", width_fixed=True)
        dpg.add_table_column(label="Exit FIR", width_fixed=True)
        dpg.add_table_column(label="Next FIR", width_fixed=True)
        dpg.add_table_column(label="Entry FL", width_fixed=True)
        dpg.add_table_column(label="Exit FL", width_fixed=True)
        
        print(len(flights))
        if len(flights) == 0:
            flights.append(Flight("No flights in range", 000000, "XXX", 0, "XXXX", "XXXX",0,0,0,0))
        for flight in flights:
            with dpg.table_row():
                dpg.add_text(flight.callsign)
                dpg.add_text(flight.fix)
                dpg.add_text(flight.cFIR)
                dpg.add_text(flight.xFIR)
                dpg.add_text(flight.efl)
                dpg.add_text(flight.xfl)        
dpg.show_viewport()
dpg.start_dearpygui()
dpg.destroy_context()
4

1 回答 1

0

您可以在渲染循环中轻松完成:

https://dearpygui.readthedocs.io/en/latest/documentation/render-loop.html

您现在唯一需要做的就是定义一个计时器类。

另一种方法是使用 Thread 模块。

到目前为止,在 Stackoverflow 上询问 DPG 并不那么受欢迎。更好的来源是 github 或 DPG Discord 服务器(您将在#support 频道中找到一些示例,了解如何构建计时器类以及如何使用它。

于 2022-02-09T21:23:47.337 回答