2010-08-25 4 views
10

Я работаю над gui, используя GUIDE в MATLAB, и из того, что я прочитал, похоже, что MATLAB постоянно обновляет элементы управления пользовательского интерфейса на основе таймера. Есть ли способ заставить его обновить элементы управления пользовательского интерфейса, чтобы я мог обновить его в середине функции? Сейчас у меня есть функция, которая делает, упрощенный, что-то вродеСила matlab gui для обновления ui control mid-function

set(handles.lblStatus,'String','Processing...') 
%function that takes a long time 
set(handles.lblStatus,'String','Done') 

Поскольку MATLAB не обновлять GUI во время функции обратного вызова, пользователь только когда видит «Готово» после длительного периода ожидания и никогда не видит «Обработка». Я попытался добавить guidata(hObject, handles) после первого набора, надеясь, что он заставит экран обновиться, но это не так.

+1

Это не таймер, а другой поток (EDT), который обновляет пользовательский интерфейс http://undocumentedmatlab.com/blog/matlab-and-the-event-dispatch- thread-edt/ – Mikhail

ответ

16

Попробуйте позвонить DRAWNOW.

set(handles.lblStatus,'String','Processing...') 
drawnow 
%function that takes a long time 
set(handles.lblStatus,'String','Done') 
+0

Спасибо! Это исправлено. :) –

0

Я считаю, что есть функция drawnow в Matlab.

drawnow завершает ожидании чертежные события

+6

Я никогда не понимал, почему люди дублируют информацию в предыдущих ответах как новые ответы. –

+1

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

+4

Да, что-то еще нуждалось в моем внимании, когда я отвечал. Извините за опоздание – neXus

Смежные вопросы