我用Ubuntu快速工具制作了一个gtk应用程序。但是我遇到了窗口关闭按钮(窗口左上角的那个)的一些问题。所以这就是:我希望我的应用程序关闭系统托盘,所以我在一个方法中编写代码,在我的窗口上创建一个按钮,并将“clicked”信号连接到我的方法。一切都正常工作。现在我希望我的窗口关闭按钮做同样的事情。当我我快速查看编写的代码,我发现了这种方法:
def on_destroy(self, widget, data=None):
# Clean up code for saving application state should be added here.
Gtk.main_quit()
所以我没有使用Gtk.main_quit()代替我在我的窗口上部署的按钮的处理程序。现在的事情是我的应用程序隐藏在系统托盘上,但是当我想要取消隐藏它时,没有窗口,尽管我可以看到我的应用程序的过程还活着。 我想说当我使用我创建的按钮时,我可以看到我的应用程序,当我取消隐藏它时,所以很明显,当我按下系统关闭按钮时,会有多个信号。
所以我的问题是当我从系统按钮关闭窗口时调用其他信号?这个地方在哪里快速实现其他信号的处理程序?
感谢您的时间!
答案 0 :(得分:1)
您的窗口是"destroy"
。连接到该信号允许您运行一些代码,但是,您的窗口仍然被破坏。如果您没有使用Gtk.main_quit()
突破主循环,那么您的应用仍在运行。要重新显示窗口,您需要重新创建它。
另一个选择是将回调函数连接到窗口的"delete-event"
。在此信号处理程序中,如果返回True
,则窗口将不被销毁。换句话说,您可以隐藏窗口并返回True
,然后再重新显示窗口。如果从此信号处理程序返回False
,则窗口将继续被销毁。