2010-10-12 41 views
0

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

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

alt text

+0

你的问题不清楚,你能举一个你想要做什么的例子吗? – ptomato 2010-10-13 16:00:59

回答

1

您的对话框,您的窗口做做同样的方式不conenct信号。学习PyGTK时我犯了同样的错误。

对话的最基本的形式是你展示并运行对话框:

aboutdialog.run() 

通常,你会立即拨打:

aboutdialog.destroy() 

的.RUN()线是一个循环,直到在对话框内发生了一些事情。

有一个工作example here

1

gtk.AboutDialog只是一个gtk.Dialog,你用同样的方式处理它的响应。而不是连接到按钮的单击信号,对话框代码将为您处理并从您的run()呼叫返回一个响应。您可以检查返回的响应的值,以确定单击了哪个按钮。

如果您尝试改写某些行为,则可以连接到gtk.Dialogresponse信号。

0

这是一个古老的问题,但由于它是谷歌的第一个命中之一,我以为我会抛出我找到的解决方案。您需要一个事件处理程序来显示关于该对话框的信息,以及一个关闭它。第一个可能会连接到你的帮助 - >关于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找到我的关于对话框,因为我已经构建了林间空地的接口。请注意,我在.run()之上使用了.show(),因为在关闭对话框之前我没有看到停止执行程序的意义。最后,响应处理程序可以根据响应采取任何操作,但我在此忽略它。