[英]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.