我使用GtkAboutDialog,除了这个小部件的关闭按钮外,一切正常。所有其他按钮工作正常,我不知道如何,但所有按钮都有默认回调,他们创建和销毁窗口。 但是GtkAboutDialog小部件的“关闭”按钮不起作用。我甚至看不到它的小部件。那么,我可以访问它吗?
[澄清]你正在看的是gtk.AboutDialog - 弹出窗口,显示有关应用程序的信息(PyGTK 2.6中的新功能)。该窗口包含“关闭”按钮小部件,该小部件包含在GtkHButtonBox小部件中。 GtkHButtonBox小部件是我能够访问的最高级别小部件。关于如何进入“关闭”按钮并连接处理程序以获得回调信号的任何想法?
答案 0 :(得分:1)
对于窗口,您不会以与对窗口相同的方式连接信号。在学习PyGTK时我犯了同样的错误。
对话框的最基本形式是显示并运行对话框:
aboutdialog.run()
通常,您会立即致电:
aboutdialog.destroy()
.run()行是一个循环,运行直到对话框中发生某些事情。
有一个有效的example here。
答案 1 :(得分:1)
gtk.AboutDialog
只是gtk.Dialog
,您可以用同样的方式处理来自它的响应。对话框代码不是连接到按钮的单击信号,而是为您处理,并从run()
调用返回响应。您可以检查返回的响应的值,以确定单击了哪个按钮。
如果您尝试覆盖某些行为,则可以连接到response
的{{1}}信号。
答案 2 :(得分:0)
这是一个老问题,但由于它是谷歌的第一个点击之一,我想我会投入我找到的解决方案。您需要一个事件处理程序来显示about对话框和一个要关闭它的对话框。第一个可能与您的帮助相关 - >关于menuitem的activate
信号。后者应该连接到about对话框的response
信号。这两个处理程序看起来像这样:
def on_menuitemHelpAbout_activate(self, *args):
self.builder.get_object('aboutdialog').show()
def on_aboutdialog_response(self, *args):
self.builder.get_object('aboutdialog').hide()
在上面的示例中,我使用GtkBuilder
来查找我的对话框,因为我已经使用glade构建了界面。请注意,我使用.show()
而不是.run()
,因为在关闭对话框之前,我没有看到暂停程序执行的意义。最后,响应处理程序可以根据响应采取任何操作,但我在这里忽略它。