gtkBuilder的一个线程中的get_object

时间:2012-04-24 21:38:11

标签: python multithreading gtk

据说你不应该从一个线程调用GUI函数,但是我想知道这是否只适用于直接调用影响GUI的函数或者它适用于GUI库提供的每个函数。例如,可以安全地致电:

gobject.idle_add(self.gui.get_object('button1').set_sensitive, False)

在线程中?因为self.gui.get_object是来自GUI框架的函数,但是self.gui.get_object('button1')实际上是在调用它。

感谢您的回答。

2 个答案:

答案 0 :(得分:1)

你在那里看到的电话似乎很安全。如上所述,您可以在任何线程中阅读(get_object),但只应在主线程中修改(set_sensitive)。这正是在这里完成的,idle_add将事件添加到主线程中运行的主循环中。

答案 1 :(得分:0)

使用GUI进行线程处理有点棘手。如果您想要正确执行,则不应从主线程之外的任何其他线程中更新GUI(GUI库中的常见限制)。但是,您可以从多个线程进行多次读取调用。