Установите необходимые пакеты
Чтобы создать приложение с использованием Python 3 и GTK3, вам необходимо установить привязки Python для библиотек GObject. Это можно сделать, установив пакет PyGObject, включенный в репозитории почти всех основных дистрибутивов Linux. Чтобы установить эти зависимости в Ubuntu, вы можете использовать следующую команду:
$ sudo apt установить python3 python3-giВы также можете скомпилировать PyGObject из исходного кода, доступного здесь.
Полный код приложения Hello World
Полный пример кода приложения Hello World, написанного на Python 3 и GTK3, можно найти ниже. Это приложение отправляет сообщение «Hello World !!”Уведомление на рабочий стол при нажатии кнопки.
импорт giджи.require_version ("Gtk", "3.0 ")
джи.require_version ('Уведомить', '0.7 ')
от gi.репозиторий импорт Gtk
от gi.Импорт репозитория Уведомить
класс MyWindow (Gtk.Окно):
def __init __ (сам):
Gtk.Окно.__init __ (self, title = "Hello World")
Gtk.Окно.set_default_size (сам, 640, 480)
Поставить в известность.init ("Простое приложение GTK3")
себя.box = Gtk.Коробка (интервал = 6)
себя.добавить (сам.коробка)
себя.button = Gtk.Кнопка (label = "Щелкните здесь")
себя.кнопка.set_halign (Gtk.Выровнять.ЦЕНТР)
себя.кнопка.set_valign (Gtk.Выровнять.ЦЕНТР)
себя.кнопка.подключиться ("нажал", самостоятельно.on_button_clicked)
себя.коробка.pack_start (сам.кнопка, True, True, 0)
def on_button_clicked (сам, виджет):
n = Уведомить.Уведомление.new ("Простое приложение GTK3", "Hello World !!")
п.показывать()
win = MyWindow ()
выиграть.connect ("уничтожить", Gtk.main_quit)
выиграть.показать все()
Gtk.основной()
Скриншот окончательного результата.
Уведомление на рабочем столе, которое появляется при нажатии кнопки «Щелкните здесь»:
Пошаговое объяснение
Различные операторы «импорта» в первых нескольких строках кода импортируют необходимые модули, необходимые для работы приложения. Эти модули предоставляют множество классов и функций, которые можно использовать в приложении. «Gi.require_version »гарантируют, что импортируется только необходимая версия библиотеки, чтобы избежать проблем совместимости и сбоев. В этом случае «3.0 »используется, чтобы убедиться, что в приложении используется библиотека GTK3, а не GTK2 или любая другая версия GTK.
Подобно классу GTK, класс Notify также импортируется путем указания его требуемой версии (0.7 - это последняя версия на момент написания этой статьи). Этот класс будет использоваться позже в приложении.
импорт giджи.require_version ("Gtk", "3.0 ")
джи.require_version ('Уведомить', '0.7 ')
от gi.репозиторий импорт Gtk
от gi.Импорт репозитория Уведомить
Следующие подклассы операторов «Gtk.Window »как класс« MyWindow ». «Gtk.Окно.__init__ »инициализирует конструктор суперкласса (Gtk.Window), из которого был создан подкласс (MyWindow). В конструкторе заголовок приложения также устанавливается как «Hello World» с помощью аргумента «title». Геометрия окна приложения по умолчанию также устанавливается путем указания ширины и высоты в методе set_default_size.
класс MyWindow (Gtk.Окно):def __init __ (сам):
Gtk.Окно.__init __ (self, title = "Hello World")
Gtk.Окно.set_default_size (сам, 640, 480)
Затем метод «init» класса Notify используется для инициализации библиотеки «libnotify» путем предоставления заголовка приложения. Без инициализации уведомления не будут отправляться и отображаться на рабочем столе Linux.
Поставить в известность.init ("Простое приложение GTK3")Оператор «box» добавляет пустой контейнер макета в главное окно приложения. Этот контейнер похож на пустой холст, на котором можно разместить любое количество виджетов. «Интервал» означает расстояние между виджетами в «пиксельных» единицах.
себя.box = Gtk.Коробка (интервал = 6)себя.добавить (сам.коробка)
Новый виджет кнопки «Щелкните здесь» создается с помощью «Gtk.Кнопка »метод. Затем он выравнивается по горизонтальному и вертикальному центрам макета родительского блока с помощью методов «set_halign» и «set_valign». Кнопка связана с сигналом «нажата», так что всякий раз, когда кнопка нажата, может быть вызван метод обратного вызова «on_button_clicked». Наконец, виджет кнопки вставляется слева по горизонтальной оси в макет окна с помощью поля «box».pack_start »метод. Этот метод принимает четыре аргумента: добавляемый объект виджета, логическое значение для расширения виджета, логическое значение для заполнения виджета и отступ между добавленным и другими соседними виджетами.
себя.button = Gtk.Кнопка (label = "Щелкните здесь")себя.кнопка.set_halign (Gtk.Выровнять.ЦЕНТР)
себя.кнопка.set_valign (Gtk.Выровнять.ЦЕНТР)
себя.кнопка.подключиться ("нажал", самостоятельно.on_button_clicked)
себя.коробка.pack_start (сам.кнопка, True, True, 0)
Метод «on_button_click» вызывается всякий раз, когда нажимается кнопка «Щелкните здесь». Новое уведомление создается с использованием «нового» метода, который принимает заголовок и содержимое уведомления в качестве аргументов. Затем это уведомление отображается на рабочем столе с помощью метода «показать». Вы также можете переместить «новый» оператор в главный конструктор, чтобы избежать повторного создания уведомления при каждом нажатии кнопки.
def on_button_clicked (сам, виджет):n = Уведомить.Уведомление.new ("Простое приложение GTK3", "Hello World !!")
п.показывать()
Следующие несколько утверждений касаются создания, управления и отображения нового окна приложения. Создается новый экземпляр класса «MyWindow», который подключается к сигналу «уничтожить», чтобы гарантировать правильное закрытие приложения всякий раз, когда пользователь решает выйти из приложения, нажав кнопку «x». Метод «show_all» отображает окно приложения на рабочем столе Linux. Наконец, запускается основной цикл приложения, отвечающий за обработку событий и сигналов.
Заключение
GTK3 и Qt - одни из самых популярных фреймворков графического интерфейса, используемых для создания приложений, которые изначально работают в Linux. Обе эти структуры позволяют писать основную логику на языках C ++ и Python. Вы не ошибетесь, выбрав любой из этих наборов инструментов для своего следующего проекта приложения Linux.