python - процесс трассировки, запускаемый из скрипта python - PullRequest
0 голосов
/ 20 марта 2019

Я написал простой графический интерфейс с кнопкой для запуска пакетного сценария следующим образом:

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"
...

Что я хочуэто отключить кнопку в графическом интерфейсе, пока пользователь не закроет все процессы, которые были запущены из пакета.Возможно ли это?

Я думал о запуске всех процессов непосредственно в скрипте Python и отслеживании PID этих процессов, но я не уверен, как это можно сделать, получив PID (рассматривая процессы какпеременные, а не фиксированные имена для поиска в tasklist), а также как их следует отслеживать в моем приложении с графическим интерфейсом?Спасибо!

...