exponenta event banner

waitbar

Диалоговое окно «Создать или обновить панель ожидания»

Описание

пример

f = waitbar(x,msg) создает немодальное диалоговое окно, содержащее строку ожидания с указанным сообщением. Полоса ожидания имеет дробную длину x. Диалоговое окно остается открытым до тех пор, пока управляемый им код не закроет его или пользователь не нажмет кнопку закрытия (X) в строке заголовка диалогового окна. Figure объект возвращается как f.

Используйте waitbar если вы хотите показать диалоговое окно панели ожидания над несколькими окнами приложений, настольным компьютером MATLAB ® или Simulink ® и иметь возможность взаимодействовать с ними до ответа на диалоговое окно.

пример

f = waitbar(x,msg,Name,Value) задает дополнительные параметры с использованием одного или нескольких аргументов пары имя-значение, которые задают figure в диалоговом окне. Например, 'Name','Progress' задает имя диалогового окна «Ход выполнения». Укажите аргументы пары имя-значение после всех других входных аргументов.

waitbar(x) обновляет длину полосы в текущем диалоговом окне полосы ожидания до x. Последовательные значения x обычно увеличивается. Если они уменьшаются, полоса ожидания работает в обратном направлении.

waitbar(x,f) обновляет длину панели в диалоговом окне панели ожидания f на новую должность x.

пример

waitbar(x,f,msg) обновляет сообщение в диалоговом окне панели ожидания f.

Примеры

свернуть все

Создайте диалоговое окно панели ожидания, которое обновит длину дробной полосы ожидания и сообщение в трех точках кода.

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

function basicwaitbar
f = waitbar(0,'Please wait...');
pause(.5)

waitbar(.33,f,'Loading your data');
pause(1)

waitbar(.67,f,'Processing your data');
pause(1)

waitbar(1,f,'Finishing');
pause(1)

close(f)
end

Добавьте кнопку «Отмена», чтобы пользователь мог остановить текущие вычисления.

Используйте следующий код для сведения значения pi в for итерации цикла, обновление строки ожидания и сообщения с каждой итерацией. Когда пользователь нажимает кнопку «Отмена», MATLAB устанавливает логический флаг, 'canceling', до 1 (true) в данных приложения рисунка (appdata). Код проверяет это значение в цикле for и выходит из цикла, если значение флага равно 1. Дополнительные сведения о данных приложения см. в разделе Сохранение данных как данных приложения.

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

function approxpi

f = waitbar(0,'1','Name','Approximating pi...',...
    'CreateCancelBtn','setappdata(gcbf,''canceling'',1)');

setappdata(f,'canceling',0);

% Approximate pi^2/8 as: 1 + 1/9 + 1/25 + 1/49 + ...
pisqover8 = 1;
denom = 3;
valueofpi = sqrt(8 * pisqover8);

steps = 20000;
for step = 1:steps
    % Check for clicked Cancel button
    if getappdata(f,'canceling')
        break
    end
    
    % Update waitbar and message
    waitbar(step/steps,f,sprintf('%12.9f',valueofpi))
    
    % Calculate next estimate 
    pisqover8 = pisqover8 + 1 / (denom * denom);
    denom = denom + 2;
    valueofpi = sqrt(8 * pisqover8);
end

delete(f)
end

Входные аргументы

свернуть все

Длина дробной полосы ожидания, заданная как действительное число между 0 и 1. Последовательные значения x обычно увеличивается. Если они уменьшаются, то полоса ожидания работает в обратном направлении.

Пример: .75

Сообщение wait bar, указанное как символьный вектор, массив ячеек символьных векторов или строковый массив. Сообщение отображается в диалоговом окне над индикатором выполнения.

  • Если сообщение указано как символьный вектор, то в диалоговом окне будет отображаться длинное сообщение.

  • Если сообщение указывается как массив ячеек символьных векторов, то между каждым элементом массива возникают разрывы строк. Перенос длинных элементов в соответствии с диалоговым окном.

Пример: 'Please Wait'

Пример: {'Please wait', 'The operation is processing'}

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

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: 'Name','Wait Bar'

Примечание

Перечисленные здесь свойства являются только подмножеством свойств, которые можно задать. Полный список см. в разделе Свойства рисунка.

Обратный вызов кнопки отмены, указанный как дескриптор функции, массив ячеек или символьный вектор (не рекомендуется). MATLAB устанавливает обратный вызов кнопки Cancel и рисунок CloseRequestFcn значение обратного вызова для команд, указанных callback значение аргумента. Дополнительные сведения см. в разделе Запись обратных вызовов для программных приложений.

Примечание

Позвоните в delete удаление диалогового окна панели ожидания при указании CreateCancelBtn обратный вызов. При указании CreateCancelBtn обратный вызов, close функция не закрывает диалоговое окно и делает кнопки Cancel и close (X) неответственными. Эта ситуация возникает из-за CreateCancelBtn обратный вызов рекурсивно вызывает сам себя. В такой ситуации необходимо принудительно удалить полосу ожидания, например, с помощью кода, такого как:

set(groot,'ShowHiddenHandles','on')
delete(get(groot,'Children'))
Однако при вводе этих команд удаляются все открытые фигуры, а не только диалоговое окно панели ожидания.

Пример: waitbar(.5,'Processing','CreateCancelBtn',@myfun) задает CreateCancelBtn функция обратного вызова как дескриптор функции.

Пример: waitbar(.5,'Processing','CreateCancelBtn',{@myfun,x}) задает CreateCancelBtn функция обратного вызова как массив ячеек. В этом случае функция принимает входной аргумент, x.

Имя фигуры, указанное как символьный вектор или строковый скаляр.

Пример: figure('Name','Results') задает имя фигуры как 'Results'.

По умолчанию имя: 'Figure n', где n - целое число. При указании Name свойство, название фигуры становится 'Figure n: name'. Если вы хотите только Name значение для отображения, установка IntegerHandle или NumberTitle кому 'off'.

Местоположение и размер извлекаемой области, указанной как вектор формы [left bottom width height]. Эта область исключает границы фигуры, строку заголовка, строку меню и панели инструментов.

Эта таблица описывает каждый элемент в Position вектор.

ЭлементОписание
leftРасстояние от левого края основного экрана до внутреннего левого края окна. Это значение может быть отрицательным в системах с несколькими мониторами.

Если рисунок закреплен, то это значение относится к панели «Рисунок» рабочего стола MATLAB.
bottomРасстояние от нижнего края основного экрана до внутреннего нижнего края окна. Это значение может быть отрицательным в системах с несколькими мониторами.

Если рисунок закреплен, то это значение относится к панели «Рисунок» рабочего стола MATLAB.
widthРасстояние между правым и левым внутренними краями официозной панели.
heightРасстояние между верхним и нижним внутренними краями окна.

Все измерения в единицах, указанных Units собственность.

Невозможно указать фигуру Position свойство при закреплении фигуры.

В MATLAB Online™, bottom и left элементы Position векторы игнорируются.

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

Примечание

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

Единицы измерения, указанные в данной таблице в качестве одного из значений.

Значение единицОписание
'pixels' (по умолчанию)

Пикселы.

Начиная с R2015b, расстояния в пикселях не зависят от разрешения системы в системах Windows и Macintosh:

  • В системах Windows пиксель равен 1/96 дюйма.

  • В системах Macintosh пиксель равен 1/72 дюйма.

В системах Linux ® размер пикселя определяется разрешением системы.

'normalized'Эти единицы нормализуются относительно родительского контейнера. Нижний левый угол контейнера соответствует (0,0) и карты верхнего правого угла для (1,1).
'inches'Дюймов.
'centimeters'Сантиметров.
'points'Очки. Одна точка равна 1/72-й дюйма.
'characters'

Эти единицы основаны на стандартном шрифте uicontrol объекта graphics root:

  • Ширина символа = ширина буквы x.

  • Высота символа = расстояние между базовыми линиями двух строк текста.

Для доступа к шрифту uicontrol по умолчанию используйте get(groot,'defaultuicontrolFontName') или set(groot,'defaultuicontrolFontName').

MATLAB измеряет все единицы измерения из левого нижнего угла родительского объекта.

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

Порядок, в котором указывается Units и Position свойства имеют следующие эффекты:

  • При указании Units до Position свойство, затем наборы MATLAB Position с использованием указанных единиц измерения.

  • При указании Units после Position MATLAB устанавливает положение с использованием значения по умолчанию Units. Затем MATLAB преобразует Position эквивалентное значение в указанных единицах измерения.

Стиль окна, указанный как один из следующих:

  • 'normal' - Окно фигуры не зависит от других окон, а другие окна доступны во время отображения фигуры.

  • 'modal' - Фигура отображается поверх всех существующих окон фигуры, делая их недоступными до тех пор, пока верхняя фигура существует и остается модальной. Однако появятся все новые фигуры, созданные после модальной фигуры.

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

  • 'docked' - Рисунок отображается на рабочем столе или в окне документа. Когда WindowStyle свойство имеет значение 'docked', вы не можете установить DockControls свойство для 'off'. 'docked' не поддерживается в MATLAB Online.

Примечание

Это некоторые важные характеристики WindowStyle собственность и некоторые рекомендуемые передовые методы:

  • При создании окон пользовательского интерфейса всегда указывайте WindowStyle собственность. Если вы также хотите установить Resize, Position, или OuterPosition свойства фигуры, затем установите WindowStyle сначала свойство.

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

  • Запрос reset на рисунке не изменяет значение WindowStyle собственность.

Поведение стиля модального окна

Когда WindowStyle имеет значение 'modal', окно рисунка перехватывает все действия клавиатуры и мыши над всеми окнами MATLAB, пока окна видны. Не затрагиваются окна, принадлежащие приложениям, отличным от MATLAB.

Ввод Ctrl + C, когда модальная фигура имеет фокус, приводит к тому, что эта фигура возвращается к 'normal' WindowStyle параметр свойства. Это позволяет пользователю вводить в командной строке.

Цифры с WindowStyle свойство имеет значение 'modal' и Visible свойство имеет значение 'off' не ведите себя модально, пока MATLAB не сделает их видимыми. Поэтому модальное окно можно скрыть для последующего повторного использования, а не уничтожать.

Модальные фигуры не отображают дочерние элементы меню, встроенные меню или панели инструментов. Но не является ошибкой создание меню в модальной фигуре или изменение WindowStyle значение свойства 'modal' на рисунке с потомками меню. Menu объекты существуют, и фигура сохраняет их. Если сбросить рисунок WindowStyle свойство для 'normal', меню отображаются.

Подробнее

свернуть все

Модальное диалоговое окно

Модальное диалоговое окно предотвращает взаимодействие пользователя с другими окнами MATLAB перед ответом на диалоговое окно.

Немодальное диалоговое окно

Немодальное диалоговое окно позволяет пользователю взаимодействовать с другими окнами MATLAB перед ответом на диалоговое окно. Немодальное диалоговое окно также называется обычным диалоговым окном.

Панель ожидания

Индикатор, показывающий, какой процент вычисления завершен по мере выполнения вычисления путем постепенного заполнения полосы цветом слева направо. Индикатор ожидания также называется индикатором выполнения.

Совет

  • Создание модального диалогового окна хода выполнения для одного окна App Designer или uifigure- приложения на основе, используйте uiprogressdlg вместо этого функция.

Представлен до R2006a