首页 > 解决方案 > python - 从 python 脚本启动的跟踪进程

问题描述

我编写了一个带有按钮的简单 GUI 来启动批处理脚本,如下所示:

from tkinter import *
import subprocess


class Application(Frame):
    def __init__(self, master):
        super().__init__(master)
        self.master = master

        self.btn = Button(self.master, text='Start program', command=self.btn_callback)
        self.btn.pack()

    @staticmethod
    def btn_callback():
        subprocess.run(r'start C:\temp\prog.bat', stdout=subprocess.PIPE, stderr=subprocess.PIPE)


root = Tk()
root.title('my app')
root.geometry("500x500")
app = Application(root)
root.mainloop()

批处理脚本再次启动其他进程,如下所示:

@echo off
start "process1"
timeout /T 5
start "process2"
timeout /T 5
start "process3"
...

我想要的是禁用 GUI 中的按钮,直到用户关闭从批处理启动的所有进程。可能吗?

我曾想过直接在 python 脚本中启动所有进程,并跟踪这些进程的 PID,但我不确定如何获取 PID(将进程视为变量,而不是作为要搜索的固定名称tasklist)以及如何在我的 GUI 应用程序中跟踪它们?谢谢!

标签: pythonbatch-filetkinterpid

解决方案


推荐阅读