程序的主循环可以移出GUI吗?

时间:2011-01-27 03:02:45

标签: python design-patterns user-interface tkinter

如果重要的话,我正在使用python 3 / tkinter。

在查看代码示例时,我注意到主循环通常位于代码的GUI部分,其余代码为GUI提供回调,以便在需要时调用。

但我的模拟运行独立于用户交互;用户界面可以不时提供视图中的视图,但它不能控制模拟中发生的事情。所以我希望主循环关注模拟而不是UI。我该怎么做?

3 个答案:

答案 0 :(得分:2)

为什么不分开你的逻辑和演示。编写你的sim后端以响应单个基于文本的protcol来接收cmds并发回结果,然后只需通过你的gui程序与它进行对话即可。 unix套接字。

答案 1 :(得分:1)

编写自己的主循环,调用检查和处理GUI事件的函数。

答案 2 :(得分:1)

在这种情况下,您应该在单独的线程中执行处理,然后让GUI线程向该线程发送和接收消息。

但是,不要尝试直接从处理线程更新GUI。相反,您可以使用消息队列向GUI发送消息,类似于effbot's example。重要的是queue.get_nowait():如果队列中没有任何内容,您可以在GUI中定期运行此操作而不会阻塞其他线程。