2011-06-09 48 views
2

我在写一个需要循环的Tkinter程序。我无法从Tkinter所在的同一班级开始循环,我非常确定这一点。为了运行这个循环,我相信我必须使用一个单独的线程,因此是一个单独的类,以防止Tkinter冻结。我已经让Tkinter在线程中的循环打印数字时运行。但是,我需要让它配置驻留在另一个类中的Tkinter窗口。我将如何去做这件事?如何从单独的类配置Tkinter小部件?

回答

0

您不一定需要另一个线程,因为您不一定需要创建一个循环(请参阅my answer to your other question about using a nested loop)。

但是,要回答您的具体问题,您必须实现一个队列。工作线程会在队列中放置某种类型的消息,主线程通过事件循环轮询队列并响应消息。这是必要的,因为工作线程不能直接修改tk小部件。

有关在Tkinter中使用线程和队列的示例,请参见effbot.orb上的Tkinter and Threads。密切关注它如何使用after每100毫秒轮询一次队列。