如何正确销毁gtk.Dialog对象/组件
我是编程新手,正在学习用Python和PyGTK。
我正在创建一个应用程序,里面有几个对话框供用户互动。
#!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()
这个代码会显示我的消息对话框,但是当你点击对话框里的“确定”按钮时,什么也不发生,框框就卡住了。我哪里出错了呢?
2 个回答
3
@mg 我错了。你的代码是对的(我想我最开始的代码也是对的)。 我的对话框一直显示在屏幕上的原因是因为我的 gtk.main 循环在一个单独的线程中运行。
所以我只需要把你的代码(我修正过的版本)放在一个
gtk.gdk.threads_enter()
和一个
gtk.gdk.threads_leave()
之间,就解决了问题。 谢谢你的回复。
2
能给我最后一次机会吗?;)
你的代码里有一些错误:
你没有关闭一个括号
你在
.set_property
的写法不对:应该用.set_property('属性', '值')
不过我觉得这些可能是复制粘贴的时候出错了。
试试这个代码,对我来说是可以的。你是不是忘了加 gtk.main()
呢?
import gtk
info = gtk.MessageDialog(buttons=gtk.BUTTONS_OK)
info.set_property('title', 'Test info message')
info.set_property('text', 'Message to be displayed in the messagebox goes here')
response = info.run()
if response == gtk.RESPONSE_OK:
print 'ok'
else:
print response
info.destroy()
gtk.main()