0

我正在用 GTK2(技术上是 pyGTK)编写一个应用程序,并将执行一些长时间的操作。

如果我在主线程中执行长操作(这不是一个好主意),应用程序将变得无响应。

理想的部分是阻止用户修改文本输入小部件的部分,但不理想的部分是窗口不会重新绘制自身。

还有另一种方法可以做到这一点吗?

4

1 回答 1

2

如果 GUI 在昂贵的过程中不需要用户交互,那么它没有理由不能在主线程中。您仍然可以在循环中手动更新 UI(重绘、处理移动/调整窗口大小等)

  1. 通过将小部件的"sensitive"属性设置为 False 来禁用小部件。widget.set_sensitive(False)
  2. 在处理循环的每次迭代(或每次迭代n)期间,使用以下内容更新 UI:while gtk.events_pending(): gtk.main_iteration()

如果您打算使用线程,来自 ergosys 的评论以及 PyGTK FAQ 的链接应该会有所帮助。您还应该阅读GTK+ 参考文档中的线程

于 2012-11-14T00:24:14.527 回答