Dearpygui状态框未正确更新

时间:2020-11-05 18:40:41

标签: python user-interface

我正在使用dearpygui作为网络抓取工具的界面。我有一个“状态框”,我想用它来向用户传达消息。它被设置为一个只读的多行输入文本框,并设计为使用旧值进行更新并附加新消息。如果我运行该程序,它将起作用,但是直到完成webscraping(download_reports函数)后,状态框的更新才会显示。每次调用update_status函数时,gui不会更新。什么是使它在调用时而不是在整个过程完成时更新和显示的最佳方法?

def window_month_end_reports(sender, data):
    with window('Month End'):
        for building in buildings:
            add_checkbox(building)
        add_spacing()
        add_button("Done", callback=run_month_end_reports)
        add_spacing()
        add_separator()
        add_text("Select reports")
        for report in reports_list:
            add_checkbox(report)


def run_month_end_reports(sender, data):
    item_list = []
    building_list = []
    delete_item('Month End')
    for item in reports_list:  # LIST OF REPORTS SELECTED
        if get_value(item):
            item_list.append(item)
    for building in buildings:
        if get_value(building):
            building_list.append(building)
    update_status('Running month end reports')
    download_reports(building_list, item_list)


def update_status(message):
    set_value('##status box', get_value('##status box') + str(message) + '\n')

with window("Main Window"):
    add_button("Month End Reports", callback=window_month_end_reports)
    add_text("Status Box:")
    add_input_text("##status box", readonly=True, multiline=True, height=500)

start_dearpygui(primary_window="Main Window")

1 个答案:

答案 0 :(得分:0)

大概,解决这个问题最好的办法就是使用一个异步任务来完成下载报告功能。您可以使用 run_async_function 来启动下载。您可以在文档中找到长任务管理的示例:async functions