#!/usr/bin/env python
# -*- coding: utf-8 -*-
# пример helloworld.py
import gi
gi.require_version('Gtk', '3.0')
#from gi.repository.Gtk import *
import gi.repository.Gtk as gtk
class HelloWorld:
# Это функция обратного вызова. Параметры игнорируются
# в этом примере. Подробнее о функциях обратного вызова ниже.
def hello(self, widget, data=None):
print("Привет, Мир!")
def delete_event(self, widget, event, data=None):
# Если вы возвращаете FALSE в обработчике "delete_event",
# GTK отправит сигнал "destroy". Возвращение TRUE означает
# что вы не хотите чтобы окно было уничтожено.
# Это удобно использовать для всплывающих окон
# type dialogs.
print("delete event occurred")
# Измените с FALSE на TRUE И главное окно не будет уничтожено
# обработчиком "delete_event".
return False
# Другие обратный вызов.
def destroy(self, widget, data=None):
gtk.main_quit()
def hide(self, widget, data=None):
self.button_Hide.hide()
def __init__(self):
# Создание нового окна
self.window = gtk.Window()
# Когда окно получает сигнал "delete_event" (Его отправляет
# оконный менеджер, обычно при выборе опции закрытия,
# мы запрашиваем его для вызова функции delete_event ()
# определённой выше. Данные нужные функции обратного вызова
# равны NULL и они в ней игнорируются.
self.window.connect("delete_event", self.delete_event)
# Здесь мы подключаем событие "destroy" у обработчику сигнала.
# Это событие выполняется при вызове gtk_widget_destroy() в окне,
# или если мы возвратим FALSE в функции "delete_event".
self.window.connect("destroy", self.destroy)
# Задаёт толщину границы окна.
self.window.set_border_width(10)
# Создаёт новую кнопку с надписью "Привет, Мир!".
self.button = gtk.Button("Привет, Мир!")
self.button_toHide = gtk.Button("Скрой меня!")
self.button_Hide = gtk.Button("Я его скрою!")
self.button_Hide.connect("clicked", self.hide, None)
# Когда кнопка получает сигнал "clicked", она вызывает
# функцию hello() передавая ей None как аргумент.
# Функция hello() определена выше.
self.button.connect("clicked", self.hello, None)
# Это заставит окно уничтожиться в следствие вызова
# gtk_widget_destroy(window) когда "clicked". Ещё раз,
# сигнал может быть получен отсюда, или из менеджера окон.
# self.button.connect_object("clicked", gtk.Widget.destroy, self.window) # закрытие окна
self.box = gtk.HBox(True, 0)
self.box.pack_start(self.button, True, True, 0)
self.box.pack_start(self.button_toHide, True, True, 0)
self.box.pack_start(self.button_Hide, True, True, 0)
self.window.add(self.box)
# Это размещает кнопку в окне GTK (Контейнер GTK).
#self.window.add(self.button)
#self.window.add(self.button_toHide)
#self.window.add(self.button_Hide)
self.box.show()
# Последним щагом будет отображение созданной кнопки.
self.button.show()
self.button_toHide.show()
self.button_Hide.show()
# и окна
self.window.show()
def main(self):
# Все приложения PyGTK должны иметь gtk.main(). Выполнение здесь останавливается
# и начинает ожидать событий (например нажатия кнопки).
gtk.main()
# Если программа запускается напрямую или передаётся аргументом интерпретатору python
# Нужно создать экземпляр HelloWorld и показать его
if __name__ == "__main__":
hello = HelloWorld()
hello.main()