В среде быстрой разработки пользовательских интерфейсов Glade для придания виджетам (графическим объектам) интерактивных свойств необходимо определить обработчики сигналов (методы для событий).

Запустите редактор Glade, создайте новый проект HelloWorld.glade и новое окно mainWindow. Для окна mainWindow на вкладке сигналы, в разделе GtkWidget для сигнала destroy задайте имя обработчика, например, onDestroy. В вашей программе функция onDestroy будет выполняться тогда, когда вы закроете окно mainWindow.

Сохраните проект. Теперь файл HelloWorld.glade выглядит так:

<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.1 -->
<interface>
  <requires lib="gtk+" version="3.20"/>
  <object class="GtkWindow" id="mainWindow">
    <property name="can_focus">False</property>
    <signal name="destroy" handler="onDestroy" swapped="no"/>
    <child>
      <placeholder/>
    </child>
    <child>
      <placeholder/>
    </child>
  </object>
</interface>

Поправим программу HelloWorld.py

#!/usr/bin/python3
# -*- coding: utf-8 -*-
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk

class Handler:
    def onDestroy(self, *args):
        print("Программа Hello World! завершена")
        Gtk.main_quit()

builder = Gtk.Builder()
builder.add_from_file("HelloWorld.glade")
builder.connect_signals(Handler())

window = builder.get_object("mainWindow")
window.show_all()

Gtk.main()

Сохраните и запустите программу. Заметили, проблема с завершением программы исчезла? Окно программы закрывается крестиком (Х), и в терминале выполнение программы завершается.

<<< Glade Gtk Python сигналы Ω Anjuta Gtk Python >>>