Как сделать свой интерфейс для linux

Как сделать свой интерфейс для linux

Библиотека сайта rus-linux.net

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

  • реализация алгоритмов цифровой обработки сигналов (DSP): быстрые спектральные преобразования (FFT и другие), вэйвлеты, авторегрессионные разложения. ;
  • обработка аудио-потоков (пакеты: sox, ogg, speex и другие);
  • задачи IP-телефонии, SIP протокола, реализация разнообразных программных SoftSwitch;

Это сравнительный ряд автономных областей развития приведен как пример таких частных классов, одним из которых является и разработка GUI приложений. И как частный класс, со своей спецификой инструментов и средств, он не заслуживал бы отдельного упоминания, если бы не одно обстоятельство — принципиально отличающееся, диаметрально противоположное отношение к GUI в операционных системах семейства Windows и в UNIX (и в Linux, как его частный вид):

  • В Windows каждое приложение является принципиально GUI, неотъемлемым атрибутом любого приложения в Win32 API (низкого уровня) является главное окно приложения, уже само приложение «вяжется» вокруг его главного окна. Операционная система регистрирует классы окон и уже далее к ним соотносит конкретные приложения. Не может существовать приложения (взаимодействующего с пользователем, не системные службы) без окна, с этим были связаны и первоначальные сложности Windows в реализации консольных (терминальных) приложений.
  • в UNIX картина принципиально обратная: первичным является приложение, которое, по умолчанию, является консольным, текстовым, вся графическая система не является составной частью операционной системы, а является надстройкой пользовательского уровня. Чаще всего такой графической надстройкой является X11 (в реализации Xorg или X11R5), но и это не обязательно: практиковались и другие графические системы, хороший пример тому графические системы Qwindow, а затем Photon в операционной системе QNX, сосуществующие там одновременно с X11.
  • Показательно в этом смысле то, что вся оригинальная часть реализации X11 работает в пространстве пользователя, не в привилегированном режиме ядра (супервизора): работа с аппаратурой видеоадаптеров, устройствами ввода и другое. Отдельные реализации (видеосистемы NVIDIA или ATI Radeon) могут быть реализованы в режиме ядра (модули), но это а) сторонние относительно X11 разработки, и б) решение вопросов только производительности.

Из-за обозначенной специфики, разработка GUI приложений в UNIX (Linux) принципиально отличается:

  • вся работа GUI приложений ведётся через промежуточные слои (библиотеки) пользовательского уровня;
  • из-за того, что это ординарный пользовательский уровень, для разработчика предлагается широкий спектр альтернативных инструментов (библиотек), практически равнозначных, и конкурирующих друг с другом: Xlib, GTK+, Qt, wxWorks и многие другие.
  • базовый API работы с X11 предоставляет Xlib, все другие используют уже её функционал, как это показано на рисунке.

  • разработчик имеет возможность широкого выбора тех уровня и инструментов, которые он предполагает использовать, начиная от Xlib и выше (хотя уровень Xlib и слишком низок и работа с ним громоздкая).

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

Средства Xlib (архив Xlib.tgz ):

Средства GTK+ (архив GTK+.tgz ):

$ gcc gtk.c -o gtk `pkg-config —cflags —libs gtk+-2.0`

Читайте также:  Canon pixma mg3640s заправка картриджей самостоятельно дома

Средства Qt (архив Qt.tgz ):

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

Теперь проделываем последовательно:

Исходя из «подручных» файлов исходных кодов, у нас сгенерировался файл проекта и, далее, сценарий сборки ( Makefile ). Далее проделываем традиционную сборку, а заодно и посмотрим опции компиляции и сборки, которые нам сгенерировал проект:

g++ -c -pipe -Wall -W -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector —param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables

g++ -o Qt index.o -L/usr/lib/qt-3.3/lib -lqt-mt -lXext -lX11 -lm

index.cc index.o Makefile Qt Qt.pro

Средства wxWidgets (архив wxWidgets.tgz):

$ g++ simple.cc `wx-config —cxxflags` `wx-config —libs` -o simple

Средства GLUT (архив glut.tgz):

OpenGL Utility Toolkit, как и следует из названия, это средства использования технологии OpenGL в приложениях, которая требует определённой поддержки со стороны видео оборудования.

$ gcc glut.c -o glut -lX11 -lglut

То, что показано выше, это фактически не приложения, а скелеты приложений, но они позволяют: а) сравнить подобие всех GUI технологий в X11, и б) быть отправной точкой для сборки более содержательных GUI приложений. Показано только несколько GUI технологий, применяемых в X11 (большинство из них являются кросс-платформенными, и применимы в большинстве существующих операционных систем). Каждая из этих технологий, а названы только немногие из значительно большего числа, присутствующих в UNIX, могут быть полной альтернативой любой другой из этого же ряда, они взаимно заменимы, и даже взаимно дополняемые.

В данной статье были показаны образцы кода GUI приложений. Естественно, визуальные образы таких приложений строятся не путём непосредственного кодирования, а при использовании некоторых визуальных построителей, в составе тех или иных интегрированных средств разработки (IDE).

Источник

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

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

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

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

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

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

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

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

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

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

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

Возьмем следующий пример.

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

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

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

  1. #!/usr/bin/python : путь по умолчанию для интерпретатора Python (в большинстве случаев версия 2.7), эта строка должна быть первой строкой в каждом файле Python.
  2. # — * — coding: utf-8 — * — : здесь мы устанавливаем кодировку по умолчанию для файла, UTF-8 — лучший вариант, если вы хотите поддерживать неанглийские языки, оставьте это так.
  3. from gi.repository import Gtk : здесь мы импортируем библиотеку GTK 3, чтобы использовать ее в нашей программе.
  4. Класс ourwindow (Gtk.Window): здесь мы создаем новый класс, который называется «ourwindow», мы также устанавливаем тип объекта класса на «Gtk.Window».
  5. def __init __ (self) : ничего нового, здесь мы определяем компоненты главного окна.
  6. Gtk.Window .__ init __ (self, title u003d «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 u003d Gtk.Button («Hello, World!») : мы создали новый Gtk.Button и назвали его «button1», текст по умолчанию для кнопки — «Привет, 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 u003d ourwindow() : мы должны создать новую глобальную переменную и установить ее в класс ourwindow(), чтобы мы могли вызывать ее позже с помощью библиотеки GTK +.
  15. window.connect («delete-event», Gtk.main_quit) : теперь мы соединяем сигнал «delete-event» с действием «Gtk.main_quit», это важно в чтобы удалить все виджеты после того, как мы автоматически закроем окно нашей программы.
  16. window.show_all() : отображение окна.
  17. Gtk.main() : запуск библиотеки Gtk.
Читайте также:  Заправка новых картриджей canon

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

Учебники Python GTK3

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Источник

Поделиться с друзьями
КомпСовет
Adblock
detector