我在 init 中创建了一个gtk窗口 然后我处理一个新功能 我将新函数的值附加到gtk窗口 直到第二个功能完成,窗口没有响应,并且在第二个功能完成时可以响应。
任何人都可以告诉我应该为此做些什么?
答案 0 :(得分:2)
当你在事件循环中调用一个函数时,Windows在gtk(以及一般的窗口系统)中变得没有响应,这是负责保持窗口响应的线程(这个线程重新绘制窗口,处理鼠标点击等。 )。如果您调用的函数立即返回,您将不会注意到无响应,但如果该函数做了一些繁重的工作,您将遇到您在问题中描述的情况。
您应该在自己的线程(工作线程)中执行第二个函数。如果您需要在此函数返回后刷新窗口,请确保在事件循环中进行此更新(例如,调用glib.idle_add)而不是从工作线程进行此更新!否则,可能会发生奇怪的崩溃。