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 ")
gi.require_version ('Сповістити', '0.7 ')
від гі.імпорт репозиторію Gtk
від гі.імпорт сховища
клас MyWindow (Gtk.Вікно):
def __init __ (self):
Gtk.Вікно.__init __ (self, title = "Привіт Світ")
Gtk.Вікно.set_default_size (self, 640, 480)
Повідомте.init ("Простий додаток GTK3")
себе.поле = Gtk.Коробка (інтервал = 6)
себе.додати (самостійно.коробка)
себе.button = Gtk.Кнопка (label = "Натисніть тут")
себе.кнопку.set_halign (Gtk.Вирівняти.ЦЕНТР)
себе.кнопку.set_valign (Gtk.Вирівняти.ЦЕНТР)
себе.кнопку.підключити ("клацнув", самостійно.on_button_clicked)
себе.коробці.pack_start (self.кнопка, True, True, 0)
def on_button_clicked (self, віджет):
n = Повідомляти.Повідомлення.новий ("Простий додаток GTK3", "Привіт Світ !!")
п.показати ()
win = MyWindow ()
виграти.connect ("знищити", Gtk.main_quit)
виграти.Покажи все()
Gtk.основний ()

Знімок екрану кінцевого результату.

Сповіщення на робочому столі, яке надходить при натисканні кнопки "Натисніть тут":

Покрокове пояснення

Різні оператори “import” у перших кількох рядках коду імпортують необхідні модулі, необхідні для роботи програми. Ці модулі надають численні класи та функції, які можна використовувати в додатку. “Гі.require_version ”гарантують, що імпортується лише потрібна версія бібліотеки, щоб уникнути проблем сумісності та збоїв. У цьому випадку “3.0 ”використовується, щоб переконатися, що в додатку використовується бібліотека GTK3, а не GTK2 або будь-яка інша версія GTK.

Подібно до класу GTK, клас Notify також імпортується, вказавши необхідну версію (0.7 - це остання версія на момент написання цієї статті). Цей клас буде використаний пізніше в додатку.

імпорт гі
gi.require_version ("Gtk", "3.0 ")
gi.require_version ('Сповістити', '0.7 ')
від гі.імпорт репозиторію Gtk
від гі.імпорт сховища

Наступний виклад підкласів “Gtk.Вікно ”як“ MyWindow ”. "Gtk.Вікно.__init__ ”метод ініціалізує конструктор суперкласу (Gtk.Вікно), з якого було створено підклас (MyWindow). У конструкторі заголовок програми також встановлюється як “Hello World” за допомогою аргументу “title”. Геометрія вікна програми за замовчуванням також встановлюється шляхом вказівки ширини та висоти в методі “set_default_size”.

клас MyWindow (Gtk.Вікно):
def __init __ (self):
Gtk.Вікно.__init __ (self, title = "Привіт Світ")
Gtk.Вікно.set_default_size (self, 640, 480)

Далі метод “init” класу Notify використовується для ініціалізації бібліотеки “libnotify” шляхом надання заголовка програми. Без ініціалізації сповіщення не надсилатимуться і не відображатимуться на робочому столі Linux.

Повідомте.init ("Простий додаток GTK3")

Оператор “box” додає порожній контейнер макета до головного вікна програми. Цей контейнер схожий на порожнє полотно, куди можна покласти будь-яку кількість віджетів. «Інтервал» означає простір між віджетами в «піксельних» одиницях.

себе.поле = Gtk.Коробка (інтервал = 6)
себе.додати (самостійно.коробка)

Новий віджет кнопки «Клацніть тут» створюється за допомогою «Gtk.Кнопковий ”метод. Потім він вирівнюється по горизонтальному та вертикальному центрам батьківського макета вікна за допомогою методів “set_halign” та “set_valign”. Кнопка підключена до сигналу "клацання", щоб при кожному натисканні кнопки можна було викликати метод зворотного виклику "on_button_clicked". Нарешті, віджет кнопки вставляється зліва вздовж горизонтальної осі до макета вікна за допомогою «вікна.pack_start ”метод. Цей метод приймає чотири аргументи: об’єкт віджета, який потрібно додати, логічний для розширення віджета, логічний для заповнення віджета та відступ між доданим та іншими сусідніми віджетами.

себе.button = Gtk.Кнопка (label = "Натисніть тут")
себе.кнопку.set_halign (Gtk.Вирівняти.ЦЕНТР)
себе.кнопку.set_valign (Gtk.Вирівняти.ЦЕНТР)
себе.кнопку.підключити ("клацнув", самостійно.on_button_clicked)
себе.коробці.pack_start (self.кнопка, True, True, 0)

Метод “on_button_click” викликається кожного разу, коли натискається кнопка “Click Here”. Нове повідомлення створюється за допомогою методу “new”, який приймає заголовок та вміст повідомлення як аргументи. Потім це сповіщення відображається на робочому столі за допомогою методу "показати". Ви також можете перемістити оператор “new” в основний конструктор, щоб уникнути відтворення сповіщення при кожному натисканні кнопки.

def on_button_clicked (self, віджет):
n = Повідомляти.Повідомлення.новий ("Простий додаток GTK3", "Привіт Світ !!")
п.показати ()

Наступні кілька тверджень стосуються створення, управління та відображення нового вікна програми. Створюється новий екземпляр класу “MyWindow”, який підключається до сигналу “знищити”, щоб забезпечити належне закриття програми кожного разу, коли користувач вирішить залишити програму, натиснувши кнопку “x”. Метод “show_all” відображає вікно програми на вашому робочому столі Linux. Нарешті, запускається основний цикл програми, відповідальний за обробку подій та сигналів.

Висновок

GTK3 та Qt є одними з найпопулярніших фреймворків графічного інтерфейсу, що використовуються для створення додатків, які працюють на Linux. Обидва ці фреймворки дозволяють писати основну логіку на мовах C ++ та Python. Ви не можете помилитися, вибравши будь-який із цих наборів інструментів для наступного проекту програми Linux.

Кращі ігри командного рядка для Linux
Командний рядок - це не просто ваш найбільший союзник при використанні Linux, він також може бути джерелом розваг, оскільки ви можете використовувати ...
Кращі програми для картографування геймпадів для Linux
Якщо ви любите грати в ігри на Linux із геймпадом замість типової системи введення клавіатури та миші, є кілька корисних програм для вас. Багато ігор ...
Корисні інструменти для геймерів Linux
Якщо ви любите грати в ігри на Linux, швидше за все, ви, можливо, використовували додатки та утиліти, такі як Wine, Lutris та OBS Studio, щоб покращит...