题
我在林间空地做了AboutDialog
禁区,但是关闭按钮不起作用。我不知道如何该按钮连接到一个单独的功能,因为它坐落在一个小部件称为dialog-action_area
。
另一个问题是,如果我用的窗口管理器创建的关闭按钮,我不能再次打开它,因为它已经被摧毁。
我怎样才能改变这种做法,它只是隐藏?
解决方案
您需要在收到删除或取消信号调用控件的隐藏()方法:
response = self.wTree.get_widget("aboutdialog1").run() # or however you run it
if response == gtk.RESPONSE_DELETE_EVENT or response == gtk.RESPONSE_CANCEL:
self.wTree.get_widget("aboutdialog1").hide()
您可以找到响应类型常量在的GTK文档
其他提示
正如任何其他对话窗口,他们需要以
- 请使用运行方法进行说明。
- 请使用 “效应初探” 信号的 醇>
第一个将阻塞主环路和将尽快对话框接收到响应,这可能是返回,点击在操作区域或按Esc任何按钮,或调用对话框的应答的方法,或“消灭”窗口,最后并不意味着西港岛线被破坏的窗口,这意味着run()方法将退出并返回响应。像这样:
response = dialog.run()
如果您使用调试器,你会发现,主循环,直到你点击一个按钮或试图关闭对话框停留在那里。一旦收到响应YOUT,然后就可以选择要useit。
response = dialog.run()
if response == gtk.RESPONSE_OK:
#do something here if the user hit the OK button
dialog.destroy()
在第二允许您使用的对话框中非阻塞的东西,那么你已经到您的对话框连接到“响应”的信号。
def do_response(dialog, response):
if response == gtk.RESPONSE_OK:
#do something here if the user hit the OK button
dialog.destroy()
dialog.connect('response', do_response)
现在,你发现,你必须摧毁你的对话框
不隶属于 StackOverflow