程序的主循环可以移出GUI吗?
我在用Python 3和tkinter,如果这有关系的话。
在查看一些代码示例时,我注意到主循环通常是在图形界面(GUI)部分的代码里,而其他的代码则是提供一些回调函数,供图形界面在需要的时候调用。
但是我的模拟运行是独立于用户交互的;用户界面只是偶尔用来展示模拟中发生的事情,并不控制模拟的过程。所以我想让主循环关注模拟本身,而不是用户界面。我该怎么做呢?
3 个回答
1
在这种情况下,你应该在一个单独的线程中进行处理,然后让图形界面(GUI)线程发送和接收消息到那个线程。
不过,不要试图直接从处理线程更新图形界面。相反,你可以使用消息队列向图形界面发送消息,这个方法类似于effbot的例子。这里面一个重要的点是queue.get_nowait()
:你可以定期在你的图形界面中运行这个方法,如果队列里没有东西,它不会阻塞其他线程。
1
自己写一个主循环,这个循环会调用一些函数来检查和处理图形用户界面(GUI)事件。
2
为什么不把你的逻辑和展示分开呢?你可以让你的后台程序通过一个简单的文本协议来接收命令并返回结果,然后你的图形界面程序可以通过比如说Unix套接字来和它沟通。