gpt4 book ai didi

python - 当进程正在运行时需要与 Python GUI 交互的帮助

转载 作者:太空宇宙 更新时间:2023-11-03 17:47:00 24 4
gpt4 key购买 nike

我正在开发一个应用程序,当您按下 GUI 上的“开始”按钮时,该应用程序将运行一批测试。问题是,一旦调用运行测试的子进程,Python GUI 就会卡住,直到子进程完成执行。顺便说一句,我正在使用 Python 2.7。

我想在测试运行时与 GUI 进行交互,可以按下不同的按钮等,而不中断测试。

以下是我对这部分内容的摘录:

import Tkinter
import tkMessageBox
import subprocess


top = Tkinter.Tk()

def batchStartCallBack():
tkMessageBox.showinfo("Batch Application", "Batch STARTED!")
for x in range(0, 3):
p = subprocess.call('batch path', stdout = None, stderr = None, shell=False)

def batchStopCallBack():
tkMessageBox.showinfo("Batch Application", "Batch Stopped!")
# STOP BATCH

StartButton = Tkinter.Button(top, text = "Start Batch", command = batchStartCallBack, width = 8, height = 2)
StopButton = Tkinter.Button(top, text = "Stop Batch", command = batchStopCallBack, width = 8, height = 2)

StartButton.pack()
StopButton.pack()

top.mainloop()

最佳答案

您应该使用subprocess.Popen,即 non-blocking 。调用 subprocess.call 将使当前脚本等待,直到子进程完成。在 gui 中,会运行一个无限循环来检查输入,这意味着您的 gui 将没有响应,正如您所看到的。可以初始化一个子进程池,并为 GUI 使用一个单独的子进程,并为运行使用另一个子进程...

关于python - 当进程正在运行时需要与 Python GUI 交互的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29633831/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com