【问题标题】:GtkAboutDialog Close Button BugGtkAboutDialog 关闭按钮错误
【发布时间】:2013-05-24 04:38:30
【问题描述】:

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

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

【问题讨论】:

  • 你的问题不清楚,你能举个例子说明你正在尝试做什么吗?

标签: python user-interface gtk pygtk


【解决方案1】:

您连接信号的方式与对话框的连接方式与窗口连接的方式不同。我在学习 PyGTK 时也犯了同样的错误。

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

aboutdialog.run()

通常你会立即致电:

aboutdialog.destroy()

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

有一个工作的example here

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      这是一个古老的问题,但由于它是谷歌的第一个热门问题,我想我会提出我找到的解决方案。您需要一个事件处理程序来显示关于对话框并关闭它。第一个可能会连接到您的帮助->关于 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(),因为在关闭对话框之前我看不到暂停程序执行的意义。最后,响应处理程序可以根据响应采取任何行动,但我在这里忽略它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多