Python: 有没有方法可以在后台运行mainloop()?

2 投票
3 回答
1096 浏览
提问于 2025-04-16 14:20

有没有办法让我在后台运行mainloop()?我不想增加线程的复杂性。提前谢谢你。

3 个回答

0

你有没有想过把你的消息循环放在前台,而把其他处理放在后台(比如用一个after方法)?特别是当你不想使用线程的时候。不过,我觉得从长远来看,使用线程或进程可能会更有效。

2

不,这样做是不行的。消息循环是在它自己的线程中运行的,它会处理你的消息队列。

其实,后台线程和前台线程之间并没有什么官方的区别。处理你消息的那个线程通常被称为前台线程,但它和其他线程并没有本质的不同。我们之所以称它们为前台或后台,只是一种约定而已。

最终,那个有消息循环的主线程在调用栈的最上面,这就是它必须如此的原因。

当然,你可以启动一个长时间运行的任务,并让它频繁处理消息,但这样做需要对重入问题有很好的理解,而且通常会让人感到很头疼。

如果你想要长时间运行的后台任务,那么你可能需要使用线程。

3

不行。图形用户界面(GUI)框架的主循环必须始终在前台运行。

撰写回答