独立 运行 两个 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 并在一个全新的进程中处理它,而不是直接传递任何参数。似乎是一个更安全的选择。
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 并在一个全新的进程中处理它,而不是直接传递任何参数。似乎是一个更安全的选择。