How to run two parallel scripts from tkinter?

丶灬走出姿态 提交于 2021-01-29 21:25:47

问题


With this code I was able to create a TK Inter pop-up with a button to run a Sample_Function.

This Sample_Function destroys the tk pop-up, runs another python file, and then opens itself (the first pop-up) again.

How can I run the other_python_file and pop-up 'itself' at the same time — so I can be able to trigger many functions before each one gets completed?

import sys, os
from tkinter import *
import tkinter as tk

root = Tk()

def Sample_Function():
    root.destroy()
    sys.path.insert(0,'C:/Data')
    import other_python_file
    os.system('python this_tk_popup.py')

tk.Button(text='Run Sample_Function', command=Sample_Function).pack(fill=tk.X)
tk.mainloop()

回答1:


I think this will do close to what you want. It uses subprocess.Popen() instead of os.system() to run the other script and rerun the pop-up which doesn't block execution while waiting for them to complete, so they can now execute concurrently.

I also added a Quit button to get out of the loop.

import subprocess
import sys
from tkinter import *
import tkinter as tk

root = Tk()

def sample_function():
    command = f'"{sys.executable}" "other_python_file.py"'
    subprocess.Popen(command)  # Run other script - doesn't wait for it to finish.
    root.quit()  # Make mainloop() return.

tk.Button(text='Run sample_function', command=sample_function).pack(fill=tk.X)
tk.Button(text='Quit', command=lambda: sys.exit(0)).pack(fill=tk.X)
tk.mainloop()
print('mainloop() returned')

print('restarting this script')
command = f'"{sys.executable}" "{__file__}"'
subprocess.Popen(command)


来源:https://stackoverflow.com/questions/64723485/how-to-run-two-parallel-scripts-from-tkinter

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!