0

我用 Ubuntu 快速工具制作了一个 gtk 应用程序。但是我遇到了一些关闭窗口按钮(窗口左上角的那个)的问题。所以事情是这样的:我希望我的应用程序在系统托盘中关闭,所以我在一个方法中编写代码,在我的窗口上创建一个按钮并将“点击”信号连接到我的方法。一切正常。现在我希望我的窗口关闭按钮做同样的事情。当我查找在快速编写的代码上,我发现了这种方法:

 def on_destroy(self, widget, data=None):
    # Clean up code for saving application state should be added here.
    Gtk.main_quit()

因此,我调用了我在窗口上部署的按钮的处理程序,而不是 Gtk.main_quit()。现在的问题是我的应用程序隐藏在系统托盘上,但是当我想取消隐藏它时,没有窗口,虽然我可以看到我的应用程序的进程还活着。我想说的是,当我使用我创建的按钮时,我可以在取消隐藏它时看到我的应用程序,所以很明显,当我按下系统关闭按钮时,会有多个信号。

所以我的问题是当我从系统按钮关闭窗口时会调用哪些其他信号?以及快速实现其他信号处理程序的地方在哪里?

感谢您的时间!

4

1 回答 1

1

你的窗口是"destroy"。连接到该信号允许您运行一些代码,但是您的窗口仍然被破坏。如果您没有打破主循环,Gtk.main_quit()那么您的应用程序仍在运行。要重新显示窗口,您需要重新创建它。

另一种选择是将回调函数连接到"delete-event"窗口。在此信号处理程序中,如果您返回True,则窗口不会被破坏。换句话说,您可以隐藏窗口并返回True,然后再重新显示窗口。如果您False从此信号处理程序返回,则窗口将继续被销毁。

于 2012-07-04T19:51:04.527 回答