python tkinter 实时显示另一个py文件的运行信息

有两个py文件,a.py是gui窗体,b.py是执行程序。

我想要达到的结果

当a.py点击按钮时,b.py程序开始执行数据处理;
同时b.py中,print出来的信息,实时在a.py的文本框中显示出来。代码和显示示例如下。
请问如何实现

问题相关代码

a.py

import tkinter as tk
# import b
root = tk.Tk()
root.resizable(width=False, height=False)
root.geometry("300x200+300+200")

def show():
    text.insert(tk.END, "希望实时显示b.py print的信息\n")
    text.update()

btn = tk.Button(root, text="开始执行b.py",
                width=10, bg="red",
                command=show)
btn.pack(side=tk.TOP)
text = tk.Text(root, )
text.pack(side=tk.LEFT)
root.mainloop()

b.py

from os import listdir
# import pandas as pd
filepath = listdir(".")
for i in filepath:
    if i.endswith(".csv"):
        print("开始处理{}文件".format(i))
        # data = pd.read_csv(i)
        '''处理过程略'''
print("处理完成")

显示出如下gui

img

print本身就是向控制台打印信息,你要想向text文本框里插入信息,只能把b.py做成函数,然后text插入函数返回的值。或者就把这个函数放在a.py里。

def dir_list():
    filepath = listdir(".")
    for i in filepath:
        if i.endswith(".csv"):
            print("开始处理{}文件".format(i))
            # data = pd.read_csv(i)
            '''处理过程略'''
    return "处理完成"

或者放在a.py里:

def dir_list():
    filepath = listdir(".")
    for i in filepath:
        if i.endswith(".csv"):
            text.insert(tk.END,"开始处理{}文件".format(i))
            text.update()
            # data = pd.read_csv(i)
            '''处理过程略'''
    text.insert(tk.END, "处理完成")
    text.update()

def show():
    text.insert(tk.END, "希望实时显示b.py print的信息\n")
    text.update()
    dir_list()