独立 运行 两个 Tk() 主循环的正确方法,第二个从第一个脚本开始?

Correct way to run two Tk() mainloops independently, with second being started from first script?

script_a.py

from tkinter import *
from script_b import test

root = Tk()

var1 = stuff
var2 = stuff

def start_scriptb():
    test([var1, var2])

Button(root, text="Start", 
command=start_scriptb)


root.mainloop()

script_b.py

from tkinter import *


def test(x):
    main = Tk()
    Label(main, text=x)
    Button(main, text="Exit", command=main.destroy())

    main.mainloop() 

这是我想要实现的一个非常基本的版本。我实际上正在生成一个进度 window,它在脚本 2 中使用 subprocess.Popen,并从脚本 1 传递变量,并通过第二个程序上的滚动文本小部件查看进度。我正在尝试生成一个新进程,每次从 script_a.

中点击该按钮时独立于根 GUI

到目前为止,它在我的测试中运行良好,但我想看看这是否会导致任何问题,或者这是否实际上产生了两个进程?

我知道每个进程应该只有一个 Tk()

使用 TopLevel() window 来显示进度在线程模块上工作正常,但是 TopLevel() window 和 root(以及任何其他如果 root 正在执行需要任何时间长度的任何类型的处理,则打开 TopLevels())。

经过许多小时的测试,我确实在 运行 两个 Tk() 循环中取得了成功,但它可能会出现问题,因为“Bryan Oakley”在许多主题中发布了关于。

最终,我决定当我需要 运行 单独的东西时,我将使用参数启动我的 GUI 并在一个全新的进程中处理它,而不是直接传递任何参数。似乎是一个更安全的选择。