Графический интерфейс пользователя

Интерфейс — что это?

Часто это слово мелькает в компьютерной терминологии, хотя частый гость и в совершенно ином контексте. В инженерной психологии термин объясняется, как разные методы общения между пользователем и оргтехникой. Обозначение «интерфейс» пришло от англичан, в переводе означает «между лицами». В области интернет-технологий этот термин охватывает унифицированные системы связи, гарантирующие обмен данными между объектами. Самый распространенный термин – «интерфейс пользователя» — набор способов, помогающих человеку управляться с аппаратурой.

Специалисты выделяют два вида:

  1. Логический тип интерфейса. Комплекс установленных алгоритмов и договоров по обмену данными между элементами.
  2. Физический тип интерфейса. Соединение автоматических, физиологических и многофункциональных данных, с поддержкой каковых связь реализуется.

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

  1. Внутримашинный интерфейс – объединение проводов, схемы сопряжения с элементами ПК и алгоритмы передачи сигналов. Различают односвязные и многосвязные.
  2. Внешний интерфейс – концепция взаимосвязи ПК с удаленными приборами. Есть интерфейс периферийных устройств и сетевой.

Пишем собственные элементы интерфейса и рисуем их

Начнём с рабочего стола (Desktop). Это будет просто область, залитая одним цветом, с инструментом для управления окнами приложений. Фактически всё, что нужно для нашего примера, — это механизм выбора и контроля текущего активного окна, а также доставки событий мыши до элементов интерфейса, над которыми они произошли.

Окно приложения (Window) — тоже залитый прямоугольник с границей и заголовком, на котором лежит кнопка закрытия окна. Кнопка (Button) — это прямоугольная область, которая меняет цвет при нажатии на неё и посылает событие (callback) по окончанию нажатия.

И мышь! Возьмите её в руки, повертите, определите, что вы можете с ней сделать: мышь можно перемещать и нажимать на ней кнопки. Отлично, значит это и  будет интерфейсом нашего драйвера. Поскольку мышь — устройство ввода, то для него мы не отправляем управляющие команды и лишь принимаем их через MouseDeviceCallback. Отметим, что для драйвера мыши могут существовать и команды управления: установка позиции курсора, чувствительности и т. д.

Осталось доставить входящие в приложение события мыши (MouseEvent) до их конечных получателей — элементов интерфейса. Первым делом надо решить, кто будет управлять этой доставкой — это должен быть класс, который имеет доступ ко всей иерархии элементов, а в нашем случае это как раз рабочий стол, приложение будет сообщать ему о новом событии мыши, вызывая метод onMouseEvent, остальное будет на его совести. Что же именно он должен делать?

Сначала надо придумать алгоритм поиска элемента, который находится в точке, в которой произошло событие мыши — nodeForMouseEvent (). Для этого надо посмотреть на рабочий стол, навести мышь на какую-нибудь кнопку и подумать, как найти именно её, зная только список элементов, лежащих на рабочем столе. И также держать в голове, что в случае, если поверх вашей кнопки лежит окно, оно перехватит событие, и кнопка его не получит. Значит событие получает тот элемент, который лежит выше всех в этой точке. Учитывая порядок отрисовки дочерних элементов в методе draw (), можно понять, что чем выше индекс элемента в массиве childs, тем позже он рисуется. В том числе если положить кнопку А на кнопку В, то кнопка А является получателем события мыши только в том случае, если нажатие не попадает в область кнопки В и попадает в область кнопки А. Так как нарисованный последним элемент лежит выше всех,  искать получателя события надо рекурсивно, начиная с родительского элемента в порядке убывания индекса элемента.  

Имея этот алгоритм, мы сможем, например, найти кнопку, которая соответствует событию нажатия кнопки мыши и выполнить её действие. Однако просто проброса события до элемента, который находится под курсором мыши, недостаточно.

Режимы опроса событий GUI

Как было сказано выше есть два основных режима GUI: MessageLoop (цикл опроса GUI) и OnEvent (по событию). Это просто два разных способа реагирования на событие GUI. Выбранный режим зависит от личных предпочтений, и в некоторой степени от типа GUI. Оба режима в равной степени способны создать любой GUI, но иногда один режим лучше другого подходит для задачи.

По умолчанию используется режим MessageLoop (цикл опроса GUI). Чтобы переключиться в режим OnEvent используйте .

Режим MessageLoop (цикл опроса GUI, по умолчанию)

В режиме MessageLoop ваш скрипт большую часть своего времени будет тратить в цикле. Этот цикл просто опрашивает GUI используя функцию GUIGetMsg. Когда произошло событие, функция GUIGetMsg возвращает значение (нажатие кнопки, закрытие GUI, и т.д.).

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

Этот режим лучше всего подходит для случаев, где GUI является главным элементом программы и все заботы сводятся к ожиданию действий от пользователя.

Смотрите страницу MessageLoop для более подробного понимания этого режима.

Режим OnEvent (по событию)

В режиме OnEvent (по событию) опрос GUI выполняется на уровне интерпретатора. При возникновении события выполняется временная приостановка скрипта и вызов назначенной функции связанной с определённым элементом управления. Например, если пользователь нажимает кнопку Button1, GUI приостанавливает основной скрипт и вызывает ранее определенную пользователем функцию связанную с Button1. После выполнения функции приостановленный основной скрипт возобновляет работу. Этот режим аналогичен методу формы в Visual Basic.

Этот режим лучше всего подходит для случаев, где GUI не является главным элементом программы и скрипт имеет и другие задачи, выполняемые параллельно с обработкой событий GUI.

Смотрите страницу OnEvent для более подробного понимания этого режима.

Типовые элементы интерфейса

  • список (list box)
  • дерево — иерархический список (tree view)
  • раскрывающийся список (combo box, drop-down list)
  • метка (label)
  • поле редактирования (textbox, edit field)
  • элемент для отображения табличных данных (grid view)
  • меню (menu)

    • главное меню окна (main menu или menu bar)
    • контекстное меню (popup menu)
    • ниспадающее меню (pull down menu)
  • окно (window)

    • диалоговое окно (dialog box)
    • модальное окно (modal window)
  • панель (panel)
  • вкладка (tab)
  • панель инструментов (toolbar)
  • полоса прокрутки (scrollbar)
  • ползунок (slider)
  • строка состояния (status bar)
  • всплывающая подсказка (tooltip, hint)

Встречаются и другие элементы управления, которые могут не входить в некоторые наборы:

  • Радиальное меню (pie menu или radial menu) — кольцевое меню вокруг курсора. Выбор пункта меню осуществляется движением курсора в направлении пункта меню.
  • Кнопка последовательного выбора — элемент, значение в котором выбирается последовательным нажатием мыши по нему. В отличие от раскрывающегося списка, такая кнопка не позволяет видеть другие значения, кроме выбранного.
  • Счётчик — двунаправленный вариант для числовых значений. Нажатие на кнопку позволяет изменить значение параметра на единицу в большую или меньшую сторону.
  • Heads-up display — отображение поверх всех элементов значения каких-то параметров либо важных сообщений.
  • Пузырь — подсказка наподобие филактера в комиксах, которая указывает на элемент — источник сообщения.
  • Валкодер — вращающийся элемент управления наподобие ручки настройки во многих радиоприёмниках. Может быть как одно- так и многооборотным.
  • Скрываемый виджет — элемент, позволяющий скрыть часть элементов управления, когда они не используются.
  • Индикатор уровня (Level Indicator) — элемент для индикации значения какой-либо величины. Иногда вместо него используется индикатор процесса, но некоторые руководства (к примеру, HIG от Apple) запрещают подобную практику.

Пакетный менеджер winget

В трансляции сразу же показали наглядный пример команды, которую удобно использовать из строки PowerToys Run: «winget install что-то». Да, у Windows появляется свой официальный пакетный менеджер! Чтобы, например, на новую машину можно было накатывать целый набор софта одним простым скриптом.

Мы не ограничились просмотром трансляции, а почитали на Hacker News реакцию разработчиков. Она оказалась различной. Есть точка зрения «слушайте, но эта штука просто скачивает и запускает exe-файлы, у неё нет ни управления зависимостями, ни даже функции удаления». На это возражают «В планы добавить всё есть, да и сильно ли нужно в Windows это управление зависимостями».

Сейчас winget в превью-версии. Он доступен в Microsoft Store тем, кто участвует в Insider-программе, и компания рекомендует именно этот способ установки, позволяющий автоматически получать из Store апдейты. Но код выложен на GitHub, и никто не запрещает собрать его самостоятельно, лишаясь автоматических апдейтов.

Основные функции GUI

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

Функция Описание
GUICreate Создание окна.
GUICtrlCreate… Создание различных элементов управления в окне.
GUISetState Отображает или скрывает окно.
GUIGetMsg Опрос GUI, чтобы обнаружить, если событие произошло (Только в режиме цикла)
GUICtrlRead Чтение данных из элемента управления.
GUICtrlSetData Установить/изменить данные в элементе управления.
GUICtrlUpdate… Изменение различных параметров элементов управления (цвет, стиль и т.д.)

Необходимо в скрипт добавить строку #include <GUIConstantsEx.au3> для подключения основных констант связанных с созданием GUI. Есть другие файлы, содержащие константы, связанные с различными элементами управления для создания их в GUI.

Сначала давайте создадим окно, назовем его «Привет Мир» и сделаем его размером 200 на 100 пиксель. При создании нового окна, оно скрыто, поэтому мы должны отобразить его.

#include <GUIConstantsEx.au3>
GUICreate(«Привет Мир», 200, 100)
GUISetState()
Sleep(2000)

Если выполнить приведённый выше пример, вы увидите открытие окна и закрытие через 2 секунды. Это не очень интересно … давайте добавим немного текста и кнопку ОК. Текст будет добавлен в координаты x=30, y=10 и кнопка в координаты x=70, y=50 и шириной 60 пикселей.

#include <GUIConstantsEx.au3>
GUICreate(«Привет Мир», 200, 100)
GUICtrlCreateLabel(«Привет Мир! Как дела?», 30, 10)
GUICtrlCreateButton(«OK», 70, 50, 60)
GUISetState()
Sleep(2000)

Теперь на много лучше, но как сделать реакцию GUI на нажатие кнопки? Здесь мы должны принять решение, как обрабатывать события — через MessageLoop (цикл опроса GUI) или через функции OnEvent (по событию).

Как работает GUI-приложение

Что ещё может происходить в UI-цикле? Если нам надо переместить окно на рабочем столе или сменить текст в лейбле, добавить дочерний элемент, можем ли мы сделать это во время отрисовки? Очевидно, эти операции могут быть небезопасными. Например, можно добавить элемент в массив childs  в тот момент, когда он находится в процессе перечисления, что вызовет ошибку. И это не единственное тонкое место — изменение размеров элементов, текста, цвета и других параметров во время отрисовки могут создать проблемы в коде рендера.

Правильным решением здесь будет синхронизация процесса рендера и модификации параметров элементов интерфейса. Поскольку подобные операции (назовём их invoke) в GUI происходят довольно часто, хорошим решением будет просто выполнять их в том же потоке, что и рендер, непосредственно перед ним. Для этого сделаем очередь операций и выберем метод добавления операции в очередь (invokeLater).

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

За пределами приложения лежат устройства ввода-вывода, которые симулированы  классами из пакета by.dev.gui.driver, а «виртуальной машиной» является простой JFrame, который получает от «видеоустройства» картинку (Image) и посылает события мыши в соответствующее «устройство» ввода.

Монитор представляет собой буфер пикселей, в который и рисуется интерфейс, а в конце каждого UI-цикла созданная им видеостраница посылается на «матрицу».

Для управления буфером пикселей создан класс Texture. Ещё вы могли заметить, что GraphicsContext потерял свойство offset и теперь всегда рисует в текстуру, начиная с верхнего левого угла (это изменение будет объяснено ниже при рассмотрении алгоритмов полупрозрачности), у него появился метод fill () для монохромной заливки прямоугольной области, а также наследник SafeGraphicsContext. Дело в том, что дочерние элементы зачастую могут выходить за границы своих родителей, следовательно, их пиксели могут отрисоваться в несуществующие области текстуры. Чтобы не производить проверку попадания в границы родителя каждый раз, проще всего делать её на стороне графического контекста.

Барабанная дробь! Вот мы и создали все инструменты, чтобы всё вышесказанное обрело хоть какой-то практический смысл.

Онлайн-курсы, чтобы стать крутым дизайнером

С чем это связано?

Дело в том, что само по себе название OpenRPA является «говорящим», и «лежит на поверхности». По этой причине его выбрал я, а через некоторое время и другие. Так как концепция pyOpenRPA заключается в абсолютно безвоздмездном использовании и открытости для всех, в этой RPA платформе нет каких-либо бюджетов. В связи с этим нет возможности и отстаивать монопольное право на использование названия (да это и не нужно). В связи с этим, было принято решение немного скорректировать название, чтобы избавить пользователей от возможной путаницы.

Навигация по туториалам pyOpenRPA

Туториал сверстан в виде серии статей, в которых будут освещаться ключевые технологии, необходимые для RPA.

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

Перечень статей-туториалов (опубликованные и планируемые):

  • Отказываемся от платных RPA платформ и базируемся на OpenSource (pyOpenRPA)
  • >> pyOpenRPA туториал. Управление оконными GUI приложениями
  • pyOpenRPA туториал. Управление WEB приложениями (то, что мы смотрим в Chrome, Firefox, Opera)
  • pyOpenRPA туториал. Управление клавиатурой & мышью
  • pyOpenRPA туториал. Распознавание графических объектов на экране

А теперь перейдем к самому туториалу.

Немного теории и терминов

Давайте попробуем разобраться в том, как устроены GUI приложения, и почему мы можем ими управлять.

Начнем с простого. Рассмотрим на примере классического блокнота, что видим мы, и что видит робот.

Основные элементы графического интерфейса

Элемент интерфейса, элемент управления, виджет – примитив графического интерфейса пользователя, который имеет стандартный внешний вид и выполняет стандартные действия.

Рисунок 1.

Окно является одним из основных элементов интерфейса операционной системы Windows.
Рабочий стол, на котором расположены программы и инструменты в виде значков или иконок.
Окна папок Windows имеют одинаковый вид или интерфейс, что облегчает работу на ПК.

Рисунок 2. Вид окна папки и его элементы

Диалоговое окно – в графическом интерфейсе является специальным элементом интерфейса, предназначенным для вывода информации и (или) получения ответа от пользователя. Осуществляет двусторонний «диалог» между пользователем и ПК.

Рисунок 3. Пример диалогового окна

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

Простейшим типом диалогового окна является окно сообщения, которое предназначено для выведения сообщения и запрашивает у пользователя подтверждение того, что он прочитал сообщение, нажатием кнопки OK. Окно сообщения информирует пользователя о завершении действия, которое выполнялось, об ошибке или подобном случае, который не требует от пользователя никакого выбора.

В диалоговых окнах, которые посвящены настройкам параметров, встречаются особые значки – выключатели и переключатели:

Выключатель – значок (флажок) в виде «галочки» в квадратном окошечке, который показывает, что установленный элемент включен.

Соответственно отсутствие «галочки» означает, что данный элемент выключен. Включение/отключение выключателя осуществляется щелчком мыши по названию соответствующей команды. Выключатель может быть установлен сразу у нескольких команд.

Переключатель – значок в виде черного кружка в круглом окошке, установленный слева от команды. Включение/отключение, как и у выключателя, происходит щелчком мыши, но в отличие от выключателя, может быть включен только у одной команды из списка.

Окно приложения. Приложениями принято называть прикладные программы. Каждое приложение имеет главное окно. В ходе работы с приложением могут открываться дополнительные подчиненные окна.

Рисунок 4. Окно приложения – графического редактора Paint

Окно документа не может существовать самостоятельно, оно управляется каким-либо приложением. Такие окна называются дочерними. Они размещаются только внутри главного окна приложения и исчезают при закрытии главного окна.

Рисунок 5. Окно документа, управляемое приложением MS Word

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

Выбор пунктов меню может осуществляться пользователем любым из указательных устройств ввода, которые предоставляет электронное устройство (с помощью мыши, клавиатуры, тачпада и т.п.).

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

Элементами графического интерфейса операционной системы Windows также являются:

  • Значки, которыми обозначаются программы и документы. Для запуска выполняется двойной щелчок кнопки мыши по значку.
  • Ярлыки, которые используются для быстрого доступа к программе, которая может храниться не на Рабочем столе и даже на другом диске.
  • Панель задач располагается в нижней части экрана. На ней располагаются кнопка Пуск, кнопки открытых окон, индикаторы и время.

Взаимодействие человека и современного ПК осуществляется с помощью объектно-ориентированного графического интерфейса, в котором:

  • все объекты представлены в виде значков;
  • операции над объектами осуществляются в окнах;
  • основным элементом программного управления является меню;
  • основным элементом аппаратного управления являются различные манипуляторы.

Запуск программ (приложений)

Выполнив задания этой темы, вы научитесь:- запускать приложения из меню Пуск;
— запускать приложения из программы Проводник;
— запускать приложения из системной папки Мой компьютер.

Задание 1.24

1. Запустите из меню Пуск графический редактор Paint.

2. Запустите из меню Пуск программу Калькулятор.

3. Создайте на диске С: папку Игры и скопируйте в нее несколько программ, например игру Сапер и программу Блокнот.

4. Из программы Проводник запустите игру Сапер и программу Блокнот, находящиеся в папке Игры.

5. Из папки МОЙ компьютер запустите любую программу, находящуюся в папке Игры.

6. Завершите работу в среде Windows и выключите компьютер.

Технология работы

1. Запустите графический редактор Paint из меню Пуск: • щелкните на кнопке Пуск на панели задач;
• выберите щелчком мыши пункт меню Все программы — откроется вложенное меню (подменю) со списком установленных на компьютере программ;
• щелчком мыши выберите в подменю пункт Стандартные — откроется вложенное меню со списком стандартных программ Windows;
• щелкните левой кнопкой мыши на строке с названием графического редактора Paint (рис. 1.8);

• закройте программу Paint, используя команду Файл ► Выход.

2. Запустите Калькулятор из меню Пуск: • щелкните на кнопке Пуск на панели задач;
• выберите щелчком мыши пункт меню Все программы;
• выберите в подменю пункт Стандартные;
• щелкните левой кнопкой мыши на строке с названием программы Калькулятор;
• закройте программу Калькулятор с помощью кнопки управления окном Закрыть.

    Последовательность команд, выбираемых одна за другой во вложенных меню, принято обозначать стрелками, например: Все программы ► Стандартные ► Калькулятор.

3. Создайте на диске С: папку Игры, воспользовавшись технологией, описанной в теме 1.2 (задание 1.8), и скопируйте в нее несколько программ, например игру Сапер (файл winmine.exe) и программу Блокнот (файл notepad.exe) из папки C:\Windows\ System32.

4. С помощью программы Проводник запустите игру Сапер из папки Игры (рис. 1.9): • щелкните на кнопке Пуск на панели задач;
• запустите Проводник, выбрав в меню команду Все программы ► Стандартные ► Проводник;
• найдите на диске С: папку Игры и откройте ее щелчком мыши;
• запустите игру Сапер двойным щелчком на значке исполняемого файла winmine.exe;
• закройте программу командой меню Игра ► Закрыть.

Рис. 1.9. Запуск приложения из программы Проводник

5. Запустите программу Блокнот, находящуюся в папке Игры, используя системную папку Мой компьютер: • дважды щелкните на значке Мой компьютер на Рабочем столе;
• выберите в списке папок и устройств локальный диск С:;
• найдите и откройте на диске С: папку Игры;
• запустите приложение Блокнот двойным щелчком на значке исполняемого файла notepad.exe;
• закройте программу Блокнот, щелкнув на кнопке управления окном Закрыть.

6. Завершите работу в среде Windows и выключите компьютер: • щелкните на кнопке Пуск на панели задач;
• выберите в нижней части меню кнопку Выключение;
• в открывшемся окне выберите команду Выключение.

Задание 1.25.

Скопируйте программу Калькулятор (calc.exe) из папки C:\Windows\System32 в папку Игры и запустите ее разными способами:• из меню Пуск;
• из программы Проводник;
• из системной папки Мой компьютер.

История


Персональный компьютер The Xerox Star


Персональный компьютер Apple Lisa

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

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

В 1960-х на свет появилась компьютерная мышь, благодаря студенту из Стэнфорда, Дугласу Энгельбарту. Так зародилась новая модель взаимодействия с ПК, а дизайнеры первых пользовательских интерфейсов получили возможность создавать меню, которыми было гораздо проще управлять пользователям. С помощью мышки стало удобно буквально перетаскивать по экрану ПК значки. Началась эпоха, в которой человеку для управления компьютером не нужно было быть экспертом в данной сфере, ведь сам ПК мог предложить своему пользователю разнообразные меню, полные тех или иных опций.

В 1970-х компания Xerox использовала данную идею, создав первый графический пользовательский интерфейс в стиле «что видишь на экране, то и получишь». Само собой, изначально эта разработка не планировалась как коммерческий продукт. Инженеры в Xerox таким способом собирались упростить подготовку документов к их печати на принтерах, производимых этой же компанией.

Вскоре после этого ребята из Apple позаимствовали новую идею у Xerox в обмен на некоторое количество акций своей новой фирмы. В 1984 году свет увидел первый Macintosh — компьютер для обывателей, с помощью которого люди могли легко выполнять какие-то повседневные задачи. Концепция персонального компьютера стала еще более доступной широким массам.

Идея оказалась настолько успешной, что в очень скором времени ее использовали парни из Microsoft, создав свою собственную платформу Windows. А появление Windows 95 без преувеличения сотворило революцию в сфере ПК.

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

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

Концепция GUI

GUI состоит из одного или нескольких окон и каждое окно содержит один или несколько элементов управления. GUI управляем событиями, которые означают реагирование на событие, подобно реакции на нажатие кнопки. Скрипт тратит большую часть времени на бездействие и ожидание события — это мало чем отличается от обычного скрипта, где вы управляете его поведением, устанавливая что и где должно произойти! Представьте это как ожидание почтальона у дверей — вы ожидаете пока письмо не появится в почтовом ящике и затем вы смотрите на письмо и решаете что с ним делать — это аналогично работе GUI — вы ожидаете прихода почтальона.

Конечно, вы можете выбрать другие задачи, в то время как GUI активен — например вы можете использовать функции GUI для создания сложного окна прогресса, которое обновляется, пока скрипт выполняет набор действий.

Библиотеки элементов интерфейса

В каждой оконной системе существует свой набор «родных» элементов с интерфейсом низкого уровня для работы с ними.
Одни библиотеки элементов управления — это высокоуровневые «обертки» к имеющимся стандартным виджетам, упрощающие работу с ними и расширяющие их функциональность.
Другие предоставляют свой единый программный интерфейс для программирования интерфейса пользователя в нескольких платформах или оконных системах, и с целью обеспечения кроссплатформенности приводят их к единому для всех платформ API.
Третьи предоставляют кроссплатформенные возможности за счёт собственной, платформонезависимой, реализации элементов управления.

  • Кроссплатформенные, на основе Java
    • Standard Widget Toolkit — в составе проекта Eclipse
    • Swing — разработка Sun, компонента Java Foundation Classes (JFC) на основе AWT
    • AWT — частично устаревший Abstract Windowing Toolkit (Sun, )
    • JavaFX — платформа для разработки RIA на Java
  • Кроссплатформенные, на основе C/C++, с возможностью использования в других языках
    • Tk
    • GTK+
    • Qt
    • wxWidgets (wxWindows)
    • IUP
    • FOX toolkit
    • FLTK
  • Кроссплатформенные, на основе Pascal
    • LCL
    • CLX — адаптация интерфейса Qt[источник не указан 2465 дней] для Borland Delphi & Kylix
  • Кроссплатформенные, на основе AJAX
    • Dojo
    • ExtJS
    • YAHOO User Interface library
  • Под AmigaOS
    • Intuition
    • Reaction
    • MUI (Magic User Interface)
  • Под AROS

    Zune

  • Под DOS
    • Turbo Vision — в составе Borland Turbo Pascal 6.0/7.0, текстовый интерфейс
    • Zinc — библиотека для Borland С++
  • Под Microsoft Windows
    • Windows API
    • Microsoft Foundation Classes
    • Windows Template Library
    • Object Windows Library (Borland Pascal 7.0, графический интерфейс)
    • Visual Component Library (Borland Delphi)
    • Windows Forms
    • Windows Presentation Foundation (или Avalon)
  • Под Unix — для X Window System
    • Xlib
    • Xt
    • Xaw
    • Motif (Open Motif, LessTif)
  • Под BREW

    BUIW

  • Графический интерфейс для игр
    • MyGUI
    • GWEN
    • CEGUI

Окна мини-рамкиMini-frame Windows

Плавающая панель находится в окне с рамкой.A floating pane resides in a mini-frame window. Окна с мини-кадрами представлены двумя классами: Класс CMDITabInfo (который может содержать только одну панель) и класс кмултипанефрамевнд (который может содержать несколько панелей).Mini-frame windows are represented by two classes: CMDITabInfo Class (which can contain only one pane) and CMultiPaneFrameWnd Class (which can contain several panes). Чтобы перечислить область в коде, вызовите метод .To float a pane in your code, call . После того, как панель помещается в плавающую область, платформа автоматически создает окно с мини-рамкой, а окно с рамкой становится родителем плавающей панели.After a pane floats, the framework automatically creates a mini-frame window and that mini-frame window becomes the floating pane’s parent. Когда Плавающая панель закреплена, платформа сбрасывает родительский элемент, а Плавающая панель преобразуется в панель закрепления (для панелей инструментов) или на сайт закрепления (для панелей с изменяемыми размерами).When the floating pane docks, the framework resets its parent, and the floating pane becomes a dock bar (for toolbars) or a dock site (for resizable panes).

Виды интерфейсов

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

Современными видами интерфейсов являются:

1) Командный интерфейс. Командный интерфейс называется так по тому, что в этом виде интерфейса человек подает «команды» компьютеру, а компьютер их выполняет и выдает результат человеку. Командный интерфейс реализован в виде пакетной технологии и технологии командной строки.

2) WIMP — интерфейс (Window — окно, Image — образ, Menu — меню, Pointer — указатель). Характерной особенностью этого вида интерфейса является то, что диалог с пользователем ведется не с помощью команд, а с помощью графических образов — меню, окон, других элементов. Хотя и в этом интерфейсе подаются команды машине, но это делается «опосредственно», через графические образы. Этот вид интерфейса реализован на двух уровнях технологий: простой графический интерфейс и «чистый» WIMP — интерфейс.

3) SILK — интерфейс (Speech — речь, Image — образ, Language — язык, Knowlege — знание). Этот вид интерфейса наиболее приближен к обычной, человеческой форме общения. В рамках этого интерфейса идет обычный «разговор» человека и компьютера. При этом компьютер находит для себя команды, анализируя человеческую речь и находя в ней ключевые фразы. Результат выполнения команд он также преобразует в понятную человеку форму. Этот вид интерфейса наиболее требователен к аппаратным ресурсам компьютера, и поэтому его применяют в основном для военных целей.

Происхождение термина «виджет»

Употребляется примерно с 1920-х годов в американском английском для обозначения простой, но необходимой вещи, маленького изделия, название которого временно забыто говорящим. Online Etymology Dictionary предполагает, что на его форму могло повлиять слово англ. gadget или же оно происходит от англ. which it — «этот, как его». Другие словари предполагают словослияние «window gadget» (букв. «оконное приспособление»), также произошедшее в начале XX века.

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

Что такое интерфейс в компьютере?

Очень важную роль играет и пользовательский интерфейс приложения, потому что по этим показателям оценивается сама программа. Разработчики отмечают такие основные положения:

  1. Ориентир на устройство, для которого приложение делается.
  2. Иконка обязана отражать главную идею.
  3. Область нажатия сенсорного дисплея должна иметь существенную погрешность.

Интерфейс операционной системы

Различают еще такой термин, как «интерфейс операционной системы» – набор средств, которые передают управляющие команды. Далее идет разбивка на подвиды:

  1. Интерфейс командной строки – вид текстового общения между юзером и ПК, когда фразы набираются на клавиатуре вручную.
  2. Программный интерфейс – запросы передают программы. Разработана серия утилит ОС, из которой нужную выбирает пользователь.

Что такое интерфейс программы?

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

  1. Запросов, где внедрен подход, ориентированный на меню.
  2. Итогов поиска.
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector