MyTetra Share
Делитесь знаниями!
Hello World
Время создания: 07.05.2017 11:17
Раздел: Python - PyGTK - Теория - сигналы и события - Привет мир!
Запись: xintrea/mytetra_db_mcold/master/base/1493928506kii6ap4ql2/text.html на raw.githubusercontent.com
#!/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 __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("Привет, Мир!")

# Когда кнопка получает сигнал "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) # закрытие окна

# Это размещает кнопку в окне GTK (Контейнер GTK).
self.window.add(self.button)

# Последним щагом будет отображение созданной кнопки.
self.button.show()

# и окна
self.window.show()

def main(self):
# Все приложения PyGTK должны иметь gtk.main(). Выполнение здесь останавливается
# и начинает ожидать событий (например нажатия кнопки).
gtk.main()


# Если программа запускается напрямую или передаётся аргументом интерпретатору python
# Нужно создать экземпляр HelloWorld и показать его
if __name__ == "__main__":
hello = HelloWorld()
hello.main()
 
MyTetra Share v.0.59
Яндекс индекс цитирования