GtkAboutDialog关闭按钮错误

2024-10-02 22:23:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用GtkAboutDialog,除了这个小部件的close按钮外,一切正常。其他所有的按钮都很好,我不知道怎么做,但所有的按钮都有默认的回调,它们创建和破坏窗口。 但是GtkAboutDialog小部件的“关闭”按钮不起作用。我甚至看不到它的小部件。那么,我可以使用它吗?在

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

alt text


Tags: 程序信息应用程序gtkclose部件公司按钮
3条回答

你不能像对待窗口那样用同样的方式来处理对话框的信号。我在学习PyGTK时犯了同样的错误。在

对话框最基本的形式是显示和运行该对话框:

aboutdialog.run()

通常你会立刻打电话给:

^{pr2}$

run()行是一个循环,它会一直运行到对话框中发生一些事情。在

有一个工作example here。在

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

如果您试图重写某些行为,可以连接到responseresponse信号。在

这是一个老问题,但由于它是谷歌的第一批热门搜索之一,我想我会把我找到的解决方案扔掉。您需要一个事件处理程序来显示about对话框,并需要一个事件处理程序来关闭它。第一个可能会连接到您的帮助->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来查找我的about对话框,因为我已经用glade构建了接口。请注意,我使用.show()而不是.run(),因为在对话框关闭之前,我看不到暂停程序执行的意义。最后,可以让响应处理程序根据响应执行任何操作,但我在这里忽略它。在

相关问题 更多 >