首页 > 解决方案 > 如何将以下 tkinter 代码转换为多线程?

问题描述

我的 tkinter 应用程序中有方法。此方法用于将数据从另一个应用程序导出为 CSV。导出数据的循环非常繁重。需要几天的时间才能完成。

我刚刚遇到了多线程概念。这有点难以理解,我花了整整一天的时间,但没有取得任何成果。下面是我在循环中使用的代码。这可以在不冻结我的 tkinter UI 的情况下由多个线程处理吗?

我有一个Label在 tkinter 窗口中显示导出的记录(单元格)的数量。

def export_cubeData(self):
    exportPath = self.entry_exportPath.get()

    for b in itertools.product(*(k.values())):
        self.update()
        if (self.flag == 0):
            list1 = list()
            for pair in zip(dims, b):
                list1.extend(pair)
            list1.append(self.box_value.get())
            mdx1 = mdx.format(*temp, *list1)
            try:
                data = tm1.cubes.cells.execute_mdx(mdx1)
                data1 = Utils.build_pandas_dataframe_from_cellset(data)
                final_df = final_df.append(data1)
                cellCount = tm1.cubes.cells.execute_mdx_cellcount(mdx1)
                finalcellCount = finalcellCount + cellCount
                self.noOfRecordsProcessed['text'] = finalcellCount
            except:
                pass
        else:
            tm.showinfo("Export Interrupted", "Data export has been cancelled")
            return
    final_df.to_csv(exportPath)
    print(time.time() - start)
    tm.showinfo("info", "Data export has been completed")
    self.noOfRecordsProcessed['text'] = '0'

标签: pythonpython-3.xtkinter

解决方案


推荐阅读