GtkAboutDialog关闭按钮错误

时间:2010-10-12 17:52:44

标签: python user-interface gtk pygtk

我使用GtkAboutDialog,除了这个小部件的关闭按钮外,一切正常。所有其他按钮工作正常,我不知道如何,但所有按钮都有默认回调,他们创建和销毁窗口。 但是GtkAboutDialog小部件的“关闭”按钮不起作用。我甚至看不到它的小部件。那么,我可以访问它吗?

[澄清]你正在看的是gtk.AboutDialog - 弹出窗口,显示有关应用程序的信息(PyGTK 2.6中的新功能)。该窗口包含“关闭”按钮小部件,该小部件包含在GtkHButtonBox小部件中。 GtkHButtonBox小部件是我能够访问的最高级别小部件。关于如何进入“关闭”按钮并连接处理程序以获得回调信号的任何想法?

alt text

3 个答案:

答案 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(),因为在关闭对话框之前,我没有看到暂停程序执行的意义。最后,响应处理程序可以根据响应采取任何操作,但我在这里忽略它。