Noob @使用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()
这会显示我的消息对话框,但是,当您单击对话框中显示的“确定”按钮时,没有任何反应,该框只是冻结。 我在这里做错了什么?
答案 0 :(得分:3)
@mg 我的错。你的代码是正确的(我猜我的初始代码也是如此) 我的对话框保留在屏幕上的原因是因为我的gtk.main循环在一个单独的线程上运行。
所以我只需将你的代码(我的更正版本)放在
之间gtk.gdk.threads_enter()
和
gtk.gdk.threads_leave()
就在那里。 谢谢你的回复。
答案 1 :(得分:2)
您的代码中存在一些错误:
您没有关闭括号
.set_property
中的语法错误:使用:.set_property('property', 'value')
但我认为它们是复制/粘贴错误。
试试这段代码,它对我有用。也许你忘记了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()