HelloWorld

Как и полагается, первым примером должна быть программа HelloWorld.

Вариант №1
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Если выше не указать кодировку скрипта,
# то не будет возможности писать даже комментарии
# на языке, отличном от английского.

# Импортирование библиотеки PyGTK, чтобы указать
# минимальную версию, с которой будут работать
# классы библиотеки gtk.
# Необязательно, если Вы уверены в том что приложение
# не станут запускать на версии 1.0
import pygtk
pygtk.require('2.0')

# Обязательная библиотека для интерфейсов, построенных
# на GTK+
import gtk

# Объявление своего класса, без наследования
# от какого-либо другого.
class HelloWorld:
    """ Автодокументирование описания этого класса
        располагается здесь, в любых тройных кавычках
    """

    def __init__(self):
        ''' Инициализирующая функция, автоматически
            вызываемая при создании экземпляра данного класса.
            self - обязательный первый аргумент любых функций
            этого класса, т.к. в нём передаётся созданный
            экземпляр.
        '''

        # Создаётся экземпляр главного окна, с указанием того,
        # что оно не имеет никакого родителя
        # (ещё есть gtk.WINDOW_POPUP)
        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        # К нему устанавливаются границы (необязательно).
        self.window.set_border_width(10)

        # Осуществляется подключение функций-обработчиков событий
        # для окна. Здесь показаны рекомендуемые, можно сказать
        # - обязательные.
        self.window.connect("delete_event", self.delete_event)
        self.window.connect("destroy", self.destroy)

        # Создаётся экземпляр кнопки с надписью 'Hello World'
        self.button = gtk.Button("Hello World")
        # Сигнал щелчка по кнопке, с вызовом функции self.hello()
        self.button.connect("clicked", self.hello)
        # Сигнал щелчка по кнопке, говорящий объекту self.window,
        # что нужно выполнить действие gtk.Window.destroy()
        self.button.connect_object("clicked", gtk.Widget.destroy, self.window)

        # Размещение кнопки на окне.
        self.window.add(self.button)
        # Команда окну, что нужно отобразить все,
        # расположенные на нём, объекты
        self.window.show_all()

    def hello(self, widget):
        ''' Печатает на стандартный вывод (в консоль) текст
        '''
        print 'Hello World'

    def delete_event(self, widget, event, data=None):
        ''' Обработчик события удаления объекта.
        '''
        print "delete event occurred"

        # Если вернуть True, то приложение не завершит
        # свою работу.
        return False

    def destroy(self, widget, data=None):
        ''' Обработчик сигнала завершения приложения.
        '''
        print "destroy signal occurred"

        # Библиотека gtk завершает работу главного окна.
        gtk.main_quit()

    def main(self):
        ''' Метод, начинающий работу главного окна.
        '''
        gtk.main()

# Стандартное условие, позволяющее исполнять программу
# только тогда, когда Вы запускаете этот скрипт,
# а не подгружаете его в качестве модуля к другому
# приложению.
if __name__ == "__main__":
    # создание именованного экземпляра класса HelloWorld.
    hello = HelloWorld()
    # Исполнение метода, получившегося экземпляра.
    hello.main()

Вариант №2

#!/usr/bin/python
# -*- coding: utf-8 -*- 

import gtk

# Объявление своего класса, с наследованием
# от суперкласса gtk.Window
class HelloWorld(gtk.Window):

    def __init__(self):

        # Инициализация суперкласса, чтобы объект класса
        # HelloWorld (он же - self) стал виджетом класса
        # gtk.Window
        gtk.Window.__init__(self)

        self.set_border_width(10)

        # Коннектимся к анонимной функции
        self.connect("destroy", lambda w: gtk.main_quit())

        self.button = gtk.Button("Hello World")
        self.button.connect("clicked", self.hello)
        self.button.connect_object("clicked", gtk.Widget.destroy, self)

        self.add(self.button)
        self.show_all()

    def hello(self, widget):
        print 'Hello World'

if __name__ == "__main__":
    # Создание неименованного экземпляра
    HelloWorld()
    gtk.main()

 

Коротко и всё предельно ясно. Дальнейшие примеры будут сложнее.

Оставить комментарий

Ваш email не будет опубликован. Обязательные поля отмечены *

Вы можете использовать это HTMLтеги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>