LAB 3.5
SCILAB. Создание графического интерфейса встроенными средствами
GUI в Scilab без дополнительных репозиториев

GUI в Scilab без дополнительных репозиториев

В Scilab можно создавать GUI без установки дополнительных репозиториев — только встроенными средствами. Основа — функции figure() и uicontrol().

Базовый алгоритм создания GUI

  1. Создать графическое окно (figure).
  2. Добавить элементы управления (uicontrol).
  3. Настроить их свойства (позиция, текст, обработчики событий).
  4. Реализовать логику обработки событий (через callback).

Ключевые функции

1. figure() — создание окна

f = figure();

Основные свойства окна:

  • 'position'[x, y, width, height] (в пикселях);
  • 'figure_name' — заголовок окна.

Пример:

f = figure();
set(f, 'position', [100, 100, 400, 300]);
set(f, 'figure_name', 'Мой интерфейс');

2. uicontrol() — добавление элементов

Синтаксис:

h = uicontrol(parent, 'style', 'тип', 'property', value, ...);

Параметры:

  • parent — дескриптор окна (f из figure);
  • 'style' — тип элемента;
  • 'property' — настраиваемое свойство (например, 'string', 'position').

Основные типы элементов ('style'):

  • 'pushbutton' — кнопка;
  • 'edit' — поле ввода текста;
  • 'text' — текстовая метка (подпись);
  • 'checkbox' — флажок;
  • 'slider' — ползунок;
  • 'listbox' — список.

Примеры элементов

Кнопка

btn = uicontrol(f, ...
    'style', 'pushbutton', ...
    'string', 'Нажать', ...
    'position', [50, 200, 100, 30], ...
    'callback', 'disp("Кнопка нажата!")');

Поле ввода

input = uicontrol(f, ...
    'style', 'edit', ...
    'string', 'Введите текст', ...
    'position', [50, 150, 200, 30]);

Текстовая метка

label = uicontrol(f, ...
    'style', 'text', ...
    'string', 'Ваш ввод:', ...
    'position', [50, 120, 100, 20]);

Флажок

chk = uicontrol(f, ...
    'style', 'checkbox', ...
    'string', 'Включить опцию', ...
    'position', [50, 100, 150, 20], ...
    'value', 0);  // 0 — снят, 1 — установлен

Ползунок

slider = uicontrol(f, ...
    'style', 'slider', ...
    'min', 0, ...
    'max', 100, ...
    'value', 50, ...
    'position', [50, 50, 200, 20]);

Обработка событий (callback)

Свойство 'callback' задаёт код/функцию, выполняемую при взаимодействии с элементом.

Пример для кнопки

btn = uicontrol(f, ...
    'style', 'pushbutton', ...
    'string', 'Показать ввод', ...
    'position', [50, 200, 120, 30], ...
    'callback', 'show_input()');

function show_input()
    text = get(input, 'string');  // Получаем текст из поля ввода
    mprintf('Вы ввели: %s\n', text);
endfunction

Пример для ползунка

slider = uicontrol(f, ...
    'style', 'slider', ...
    'min', 0, 'max', 100, 'value', 50, ...
    'position', [50, 50, 200, 20], ...
    'callback', 'update_label()');

function update_label()
    val = get(slider, 'value');
    set(label, 'string', sprintf('Значение: %d', val));
endfunction

Задание от 02 декабря 2025

Самостоятельно: Продумать элементы управления (не менее 2-х типов), для собственной задачи. Подготовить черновой код и их описание.

Срок сдачи: 09 декабря 2025 г.

GUI в Scilab без дополнительных репозиториев

GUI в Scilab без дополнительных репозиториев

В Scilab можно создавать GUI без установки дополнительных репозиториев — только встроенными средствами. Основа — функции figure() и uicontrol().

Полный пример: простой калькулятор

// Создаём окно
f = figure();
set(f, 'position', [100, 100, 300, 200]);
set(f, 'figure_name', 'Калькулятор');

// Поля ввода
input1 = uicontrol(f, 'style', 'edit', 'string', '0', 'position', [50, 150, 80, 25]);
input2 = uicontrol(f, 'style', 'edit', 'string', '0', 'position', [150, 150, 80, 25]);

// Метки
uicontrol(f, 'style', 'text', 'string', 'Число 1:', 'position', [50, 180, 60, 20]);
uicontrol(f, 'style', 'text', 'string', 'Число 2:', 'position', [150, 180, 60, 20]);

// Кнопка вычисления
btn = uicontrol(f, ...
    'style', 'pushbutton', ...
    'string', 'Сложить', ...
    'position', [100, 100, 100, 30], ...
    'callback', 'calculate()');

// Поле вывода результата
result = uicontrol(f, ...
    'style', 'text', ...
    'string', 'Результат: ', ...
    'position', [50, 50, 200, 30]);

// Функция обработки
function calculate()
    a = strtod(get(input1, 'string'));
    b = strtod(get(input2, 'string'));
    res = a + b;
    set(result, 'string', sprintf('Результат: %g', res));
endfunction

Важные свойства элементов

  • 'position'[x, y, width, height] (пиксели);
  • 'string' — текст на элементе;
  • 'value' — текущее значение (для флажков, ползунков);
  • 'min', 'max' — границы для ползунков;
  • 'callback' — код/функция при событии;
  • 'foregroundcolor' — цвет текста (вектор RGB, например [0,0,1] — синий);
  • 'backgroundcolor' — цвет фона.

Советы

  1. Позиционирование: координаты отсчитываются от верхнего левого угла окна.
  2. Получение значений: используйте get(handle, 'property').
  3. Изменение свойств: set(handle, 'property', value).
  4. Типы данных: значения из полей ввода — строки; преобразуйте их через str2num().
  5. Отладка: выводите промежуточные значения через disp() или mprintf().
Made on
Tilda