Python

Как создать простое приложение на Python и GTK3

Как создать простое приложение на Python и GTK3
В этой статье объясняется, как создать графическое приложение «Hello World» в Linux с использованием языка программирования Python 3 и среды графического интерфейса GTK3. Все примеры кода в руководстве протестированы на Python 3.8.6 и GTK 3.24.23 в Ubuntu 20.10.

Установите необходимые пакеты

Чтобы создать приложение с использованием 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.

Переназначьте кнопки мыши по-разному для разных программ с помощью X-Mouse Button Control
Может быть, вам нужен инструмент, который мог бы изменять управление вашей мышью с каждым приложением, которое вы используете. В этом случае вы можете...
Обзор беспроводной мыши Microsoft Sculpt Touch
Я недавно прочитал о Microsoft Sculpt Touch беспроводная мышь и решил ее купить. Побывав некоторое время, я решил поделиться своим опытом с ним. Эта б...
Экранный трекпад и указатель мыши AppyMouse для планшетов с Windows
Пользователи планшетов часто пропускают указатель мыши, особенно когда они привыкли пользоваться ноутбуками. Смартфоны и планшеты с сенсорным экраном ...