在python中的线程中显示一个对话框

时间:2012-06-27 15:25:17

标签: python multithreading dialog gtk pygtk

我正在尝试在一个线程中显示我的加载器对话框,因为当我启动文件的上传系统时,在处理完成之前我无法看到窗口。

我试过这样的事情:

thread.start_new_thread(self.display_loader(),(self)) 

但它不起作用。

有一种在线程中运行新窗口的特殊方法吗?

一切都是用Python和PyGtk完成的

1 个答案:

答案 0 :(得分:0)

当您说self.display_thread()时,实际上会调用 display_thread函数,并将其返回值作为第一个参数传递给thread.start_new_thread。这可能不是你想要的。

那就是说,我认为你最好不要这样做;让主线程拥有UI,然后在线程中进行加载。

请记住,GTK +不是非常线程安全的,最好是从单个线程中与GTK +进行所有交互。

更新:实际上,上面的内容可能过度简化,这是我所理解的“常见事实”(我已经使用GTK +约15年但很少用线程)。 This article以更宽容的方式重新陈述它,不知道在这种情况下它是否真的让生活变得更加容易。为了完整起见,我想提一下。