Программирование графики для linux

Создаем приложение используя GTK в Линуксе

Разрабатывать приложения в Линуксе можно с помощью фреймворка GTK. Эта библиотека предназначенная для построения графического интерфейса пользователя. GTK — это свободное программное обеспечение, которое распространяется по лицензии GNU LGPL, что позволяет создавать как бесплатные так и коммерческие приложения.

С документациею и описанием библиотеки, Вы можете ознакомиться по следующей ссылке: https://www.gtk.org

Перед написанием приложения необходимо подготовить среду разработки. Для этих целей буду использовать ОС Ubuntu 22.04. Так как приложение будет разрабатываться на языке программирования Си необходимо установить необходимые пакеты и компилятор.

Откройте терминал от имени пользователя root и введите следующую команду:

sudo apt-get install build-essential

Также нам необходимо установить пакеты GTK для разработки приложения. Вводим следующую команду в терминале:

sudo apt-get install -y libgtk-3-dev

Теперь все готово для написания первого приложения. Открываем любой текстовый редактор и пишем следующий код:

#include int main (int argc, char *argv[])

Этот код создает окно. Но прежде чем выполнить приложение, давайте разберемся немного с кодом.
#include — здесь мы подключаем библиотеку gtk. Без этой библиотеки не будет работать графическое окно и мы не сможем запустить приложение;
GtkWidget *window; — задаем имя/метку окна;
window = gtk_window_new(GTK_WINDOW_TOPLEVEL); — эта строка создает стандартное окно с рамкой;
gtk_widget_show(window); — отображаем окно на дисплее.

Теперь давайте запустим приложение. Я сохранил код приложения в файле ex1.c в домашней папки.
Открывает терминал и вводим следующие команды:

gcc ex1.c -o ex1 `pkg-config —cflags —libs gtk+-3.0

Теперь давайте улучшим код и создадим текстовую метку.

#include int main (int argc, char *argv[])

GtkWidget *label1; — задаем имя текстовой метки;
label1 = gtk_label_new(«Hello! My first Program»); — создаем текстовую метку;
gtk_container_add(GTK_CONTAINER(window), label1); — эта строка кода добавляет метку в контейнер;
gtk_widget_show(label1); — отображаем метку в окне.

Надеюсь эта публикация была полезная. Так как фреймворк GTK имеет очень много полезных и интересных функций, что не дает возможности объяснить все в одной публикации.

Источник

Как создавать приложения с графическим интерфейсом под рабочим столом Linux с помощью PyGObject — часть 1

Создание приложений в Linux может быть выполнено разными способами, но существует ограниченное количество способов, поэтому используются самые простые и наиболее функциональные языки программирования и библиотеки, поэтому мы кратко рассмотрим создание приложений под Linux. рабочий стол с помощью библиотеки GTK+ с языком программирования Python, который называется \PyGObject.

PyGObject использует GObject Introspection для создания привязки для таких языков программирования, как Python. PyGObject — это следующее поколение PyGTK, можно сказать, что PyGObject=Python + GTK3.

Сегодня мы собираемся начать серию статей о создании приложений с графическим интерфейсом пользователя (GUI) под рабочим столом Linux с использованием библиотеки GTK+ и языка PyGobject. Серия будет охватывать следующие темы:

О Питоне

Прежде всего, вы должны иметь некоторые базовые знания Python; Python — очень современный и простой в использовании язык программирования. Это один из самых известных языков программирования в мире. Используя Python, вы сможете создавать множество отличных приложений и инструментов. Вы можете пройти несколько бесплатных курсов, например, на codeacademy.com, или почитать книги о Python по адресу:

О ГТК+

GTK+ — это кроссплатформенный инструментарий с открытым исходным кодом для создания графических пользовательских интерфейсов для настольных приложений. Впервые он был запущен в 1998 году как инструментарий с графическим интерфейсом для GIMP, позже он использовался во многих других приложениях и вскоре стала одной из самых известных библиотек для создания графических интерфейсов. GTK+ выпущен под лицензией LGPL.

Создание приложений с графическим интерфейсом под Linux

Существует 2 способа создания приложений с использованием GTK+ и Python:

  1. Написание графического интерфейса с использованием только кода.
  2. Разрабатывая графический интерфейс с помощью программы \Glade, которая представляет собой инструмент RAD для простого проектирования интерфейсов GTK+, Glade создает графический интерфейс в виде XML-файла, который можно использовать с любым языком программирования для создания графического пользовательского интерфейса, после экспорта XML-файла графического интерфейса мы сможем связать XML-файл с нашей программой для выполнения нужных нам задач.

Мы объясним оба способа вкратце.

Путь только с кодом

Написание графического интерфейса только с помощью кода может быть немного сложным для программиста-новичка и очень затратным по времени, но с его помощью мы можем создавать очень функциональные графические интерфейсы для наших программ, более функциональные, чем те, которые мы создаем с помощью некоторых инструментов, таких как Glade.

#!/usr/bin/python # -*- coding: utf-8 -*- from gi.repository import Gtk class ourwindow(Gtk.Window): def __init__(self): Gtk.Window.__init__(self, title="My Hello World Program") Gtk.Window.set_default_size(self, 400,325) Gtk.Window.set_position(self, Gtk.WindowPosition.CENTER) button1 = Gtk.Button("Hello, World!") button1.connect("clicked", self.whenbutton1_clicked) self.add(button1) def whenbutton1_clicked(self, button): print "Hello, World!" window = ourwindow() window.connect("delete-event", Gtk.main_quit) window.show_all() Gtk.main()

Скопируйте приведенный выше код, вставьте его в файл \test.py, установите разрешение 755 для файла test.py и запустите файл позже, используя \./test.py», вот что вы получите.

# nano test.py # chmod 755 test.py # ./test.py

Нажав на кнопку, вы увидите предложение \Hello, World!, распечатанное в терминале:

Позвольте мне объяснить код в подробном объяснении.

  1. #!/usr/bin/python: путь по умолчанию для интерпретатора Python (в большинстве случаев версии 2.7). Эта строка должна быть первой строкой в каждом файле Python.
  2. # -*- coding: utf-8 -*-: Здесь мы устанавливаем кодировку по умолчанию для файла, UTF-8 лучше всего, если вы хотите поддерживать неанглийские языки, оставьте это так.
  3. импорт Gtk из gi.repository: Здесь мы импортируем библиотеку GTK 3, чтобы использовать ее в нашей программе.
  4. Класс ourwindow(Gtk.Window): здесь мы создаем новый класс, который называется \ourwindow, мы также устанавливаем тип объекта класса на \Gtk.Window.
  5. def __init__(self): ничего нового, здесь мы определяем компоненты главного окна.
  6. Gtk.Window.__init__(self, title=”My Hello World Program”): мы используем эту строку, чтобы установить заголовок \My Hello World Program” на \ourwindow окно, вы можете изменить заголовок, если хотите.
  7. Gtk.Window.set_default_size(self, 400,325): я не думаю, что эта строка нуждается в объяснении, здесь мы устанавливаем ширину и высоту по умолчанию для нашего окна.
  8. Gtk.Window.set_position(self, Gtk.WindowPosition.CENTER): с помощью этой строки мы можем установить положение окна по умолчанию, в данном случае мы устанавливаем его в центр с помощью параметра \Gtk.WindowPosition.CENTER, при желании вы можете изменить его на \Gtk.WindowPosition.MOUSE, чтобы открыть окно в позиции указателя мыши.
  9. button1=Gtk.Button(Hello, World!): мы создали новую Gtk.Button и назвали ее \button1, текст по умолчанию для кнопки\Hello, World!», вы можете создать любой виджет Gtk, если хотите.
  10. button1.connect(clicked, self.whenbutton1_clicked): здесь мы связываем сигнал \clicked с действием \whenbutton1_clicked, чтобы при нажатии кнопки активируется действие \whenbutton1_clicked.
  11. self.add(button1): если мы хотим, чтобы наши виджеты Gtk отображались, мы должны добавить их в окно по умолчанию, эта простая строка добавляет в окно виджет \button1, это очень необходимо сделать.
  12. def whenbutton1_clicked(self, button): теперь мы определяем здесь действие \whenbutton1_clicked, мы определяем, что произойдет при нажатии виджета \button1, Параметр \(self, button) важен для указания типа родительского объекта сигнала.
  13. печать «Hello, World!»: мне не нужно больше объяснять здесь.
  14. window=ourwindow(): мы должны создать новую глобальную переменную и присвоить ей класс ourwindow(), чтобы мы могли вызывать ее позже с помощью библиотеки GTK+.
  15. window.connect(delete-event, Gtk.main_quit): теперь мы соединяем сигнал \delete-event с действием \Gtk.main_quit, это важно для того, чтобы удалить все виджеты после того, как мы автоматически закроем окно нашей программы.
  16. window.show_all(): отображение окна.
  17. Gtk.main(): запуск библиотеки Gtk.

Вот так, легко? И очень функциональный, если мы хотим создать несколько больших приложений. Для получения дополнительной информации о создании интерфейсов GTK+ с использованием только кода вы можете посетить официальный сайт документации по адресу:

Путь дизайнера поляны

Как я сказал в начале статьи, Glade — это очень простой инструмент для создания интерфейсов, необходимых для наших программ, он очень известен среди разработчиков, и с его помощью было создано много отличных интерфейсов приложений. Этот способ называется «Быстрая разработка приложений».

Вы должны установить Glade, чтобы начать использовать его в Debian/Ubuntu/Mint:

$ sudo apt­-get install glade

В RedHat/Fedora/CentOS запустите:

После того, как вы загрузите и установите программу и запустите ее, вы увидите слева доступные виджеты Gtk, нажмите на виджет \окно, чтобы создать новое окно.

Вы заметите, что создается новое пустое окно.

Теперь вы можете добавить к нему некоторые виджеты, на левой панели инструментов щелкните виджет \кнопка” и щелкните пустое окно, чтобы добавить кнопку в окно.

Вы заметите, что идентификатор кнопки — \button1. Теперь перейдите на вкладку Сигналы на правой панели инструментов, найдите сигнал \нажатие и введите\button1_clicked под ним.

Теперь, когда мы создали наш графический интерфейс, давайте экспортируем его. Щелкните меню \Файл и выберите \Сохранить, сохраните файл в своем домашнем каталоге под именем \myprogram.glade» и выйти.

Теперь создайте новый файл \test.py и введите в него следующий код.

#!/usr/bin/python # -*- coding: utf-8 -*- from gi.repository import Gtk class Handler: def button_1clicked(self, button): print "Hello, World!" builder = Gtk.Builder() builder.add_from_file("myprogram.glade") builder.connect_signals(Handler()) ournewbutton = builder.get_object("button1") ournewbutton.set_label("Hello, World!") window = builder.get_object("window1") window.connect("delete-event", Gtk.main_quit) window.show_all() Gtk.main()

Сохраните файл, предоставьте ему права доступа 755, как раньше, и запустите его, используя \./test.py, и вот что вы получите.

# nano test.py # chmod 755 test.py # ./test.py

Нажмите на кнопку, и вы заметите, что в терминале напечатано предложение \Hello, World!.

Теперь давайте объясним новые вещи:

  1. класс Handler: здесь мы создаем класс под названием \Handler, который будет включать определения действий и сигналов, которые мы создаем для графического интерфейса.
  2. builder=Gtk.Builder(): мы создали новую глобальную переменную с именем \builder, которая представляет собой виджет Gtk.Builder, это важно для импорта файла .glade.
  3. builder.add_from_file(myprogram.glade): здесь мы импортируем файл \myprogram.glade, чтобы использовать его в качестве графического интерфейса по умолчанию для нашей программы.
  4. builder.connect_signals(Handler()): эта строка соединяет файл .glade с классом обработчика, чтобы действия и сигналы, определенные в классе \Handler, работали нормально, когда мы запускаем программу.
  5. ournewbutton=builder.get_object(button1): теперь мы импортируем объект \button1 из файла .glade, мы также передаем его в глобальную переменную\ournewbutton», чтобы использовать его позже в нашей программе.
  6. ournewbutton.set_label(Hello, World!): мы использовали метод \set.label, чтобы задать для кнопки по умолчанию текст \Hello, World! предложение.
  7. window=builder.get_object(window1): здесь мы вызвали объект \window1 из файла .glade, чтобы отобразить его позже в программе.

Вот и все! Вы успешно создали свою первую программу под Linux!

Конечно, есть много более сложных вещей, которые нужно сделать, чтобы создать реальное приложение, которое что-то делает, поэтому я рекомендую вам ознакомиться с документацией по GTK+ и GObject API по адресу:

  1. Справочное руководство по GTK+
  2. Справочник по Python GObject API
  3. Справочник по объекту PyG

Разрабатывали ли вы ранее какое-либо приложение для рабочего стола Linux? Какой язык программирования и инструменты использовались для этого? Что вы думаете о создании приложений с использованием Python и GTK 3?

Источник

Читайте также:  Принципы программирования kiss dry grasp yagni
Оцените статью