Python 如何正确销毁gtk.Dialog对象/小部件

Python 如何正确销毁gtk.Dialog对象/小部件,python,pygtk,dialog,Python,Pygtk,Dialog,使用python和pygtk进行Noob@编程 我正在创建一个应用程序,其中包括两个用于用户交互的对话框 #!usr/bin/env python import gtk info = gtk.MessageDialog(type=gtk.DIALOG_INFO, buttons=gtk.BUTTONS_OK) info.set_property('title', 'Test info message') info.set_property('text', 'Message to be displ

使用python和pygtk进行Noob@编程

我正在创建一个应用程序,其中包括两个用于用户交互的对话框

#!usr/bin/env python
import gtk
info = gtk.MessageDialog(type=gtk.DIALOG_INFO, buttons=gtk.BUTTONS_OK)
info.set_property('title', 'Test info message')
info.set_property('text', 'Message to be displayed in the messagebox goes here')
if info.run() == gtk.RESPONSE_OK:
    info.destroy()
这将显示“我的消息”对话框,但是,当您单击对话框中显示的“确定”按钮时,不会发生任何事情,该对话框将冻结。
我做错了什么?你能给我最后一次机会吗

您的代码中有一些错误:

您没有关闭支架

.set_属性中的语法错误:使用:.set_属性'property','value'

但我认为它们是复制/粘贴错误

试试这个代码,它适合我。也许你忘了gtk的主机了

@镁 我的错。你的代码是正确的,我想我最初的代码也是正确的 对话框留在屏幕上的原因是我的gtk.main循环在单独的线程上运行

所以我所要做的就是把你的代码修正版放在

gtk.gdk.threads_enter()

gtk.gdk.threads_leave()
就在那里。
谢谢您的回复。

好的。你说得对,我确实有不好的语法,但那只是复制/粘贴错误,我的代码中确实有正确的语法。我刚刚尝试了你的建议,它确实打印了“ok”,表明测试结果在响应上是正确的,但是,在我按下ok按钮后,消息对话框仍然在屏幕上完全冻结。我一定错过了什么。
gtk.gdk.threads_leave()