繁体   English   中英

Tkinter GUI在多处理/子处理时冻结

[英]Tkinter GUI freeze while multiprocessing/subprocessing

所以我遇到了一个重大问题。 我目前正在尝试使用多处理/子处理在Tkinter应用程序旁边运行文件,但是,一旦我运行该过程,GUI就会冻结,直到完成该过程为止。 有什么办法可以解决这个问题? 我还看了关于SO的其他问题,但无济于事(我发现一个建议root.update()但是没有按预期工作。

注意:我没有包括GUI元素,因为我已经制作了一些基本程序来尝试此操作(仅几行)并遇到相同的问题。 值得注意的是,我正在运行Windows。

代码(从上下文中取出):

def run_file(self):
    self.root.update()
    sub_process=subprocess.call(self.sub_proc_args)

process=multiprocessing.Process(target=self.run_file())
process.start()

通过执行self.run_file()您可以在多处理可以使用之前调用run_file 您需要使用target=self.run_file (注意,不带括号)。

我发现了问题(除了BrenBarn指出的目标问题之外)。 这是我的解决方法:

(我取出了多处理程序。)

def run_file(self):
    sub_process=subprocess.Popen(self.sub_proc_args) #Open subprocess
    self.root.update() #Update GUI    
self.run_file() #Initiate sub_process

我发现这是解决问题的方法,因为使用调用时,在执行调用时,它必须返回一个返回值,这使Tkinter无法继续其主循环。 通过使用Popen可以解决此问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM