我有个问题
关闭时我的应用程序必须从web应用程序注销。这需要一些时间。我想用“注销”信息通知用户
class Belt(gtk.Window):
def __init__(self):
super(Belt, self).__init__()
self.connect("destroy", self.destroy)
def destroy(self, widget, data=None):
if self.isLogged:
md = gtk.MessageDialog(None, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, ico, gtk.BUTTONS_NONE, txt)
md.showall()
self.send('users/logout.json', {}, False, False)
gtk.main_quit()
def main(self):
if self.iniError is False:
gtk.gdk.threads_init()
gtk.gdk.threads_enter()
gtk.main()
gtk.gdk.threads_leave()
if __name__ == "__main__":
app = Belt()
app.main()
当我试图在destroy方法中显示对话框时,只有窗口出现,没有图标和文本。 我想,这个对话框没有确认按钮,只有信息,对话框必须与所有应用程序销毁。在
有什么想法吗?在
对不起,我的英语很差
基本上,GTK必须有机会一直处理事件队列。如果另一个应用程序在处理期间没有响应,那么另一个应用程序将成为一个长时间的无响应队列。你可能不想在其他窗口中看到你想要的奇怪的东西。它甚至可能导致你的窗口系统灰色的窗口,并提出杀死可能冻结的应用程序。在
解决方案是确保正在处理事件队列。有两种主要方法可以做到这一点。如果耗时较长的部分包含许多增量步骤,则可以自己定期处理队列:
在一般情况下,您将不得不求助于某种异步处理。典型的方法是将阻塞部分放入自己的线程中,然后通过空闲回调向主线程(位于主循环中)发送信号。在您的代码中,可能如下所示:
^{pr2}$相关问题 更多 >
编程相关推荐