gtk: 为什么要使用 Gtk::Main::Iteration?

1 投票
2 回答
1934 浏览
提问于 2025-04-16 05:41

在这个问题的最后两行中,为什么要使用 Gtk::Main::iteration() 呢?如果你用的是pygtk,那么相应的问题就是,为什么要用 gtk.main_iteration_do() 呢?难道已经在运行的主循环不已经处理这些事情了吗?

2 个回答

2

这些函数的存在是为了让你可以创建自己的循环,并在其中运行GTK的循环。

你可能想在这个循环运行的同时处理其他事情,且这些事情是在同一个线程或进程中进行的。很多带有主循环的库都提供了一种方法,可以在它们的主循环中安排任务,或者提供一个函数,让你可以在其他地方运行一次循环。

3

当我写那个回答的时候,我假设这些项目会在一个很长的循环中添加,比如在某个回调函数里。除非你明确地在一个单独的线程中进行工作,否则在那段代码执行的时候,主循环实际上是没有在运行的。那段代码是告诉窗口滚动到底部,但真正的滚动只有在主循环重新控制后才会发生。

“在有事件待处理的时候,进行主循环”的这种说法在任何编程语言中都很常见,它是一种常用的方法,用来确保主循环一直运行,直到所有等待的图形界面更新都处理完毕。

撰写回答