quarta-feira, 3 de novembro de 2010

Utilizando a interface gráfica do MatLab

MatLab GUI(de)


O uso básico da interface gráfica do MatLat (Matrix Lab) é relativamente simples de programar. Existem poucos campos que precisam ser configurados para integrar a interface gráfica aos seus programas.

A parte mais complicada é feita fora do ambiente MatLab. Inclusive deve ser feito preferencialmente fora do computador. Esta parte é o rascunho utilizando lápis e papel para definir o que vai aparecer em sua tela. Quais as plotagens que serão feitas, e onde vão aparecer? Quais os controles, quais os tipos de caixas interativas serão utilizadas e onde vão aparecer?

A interface gráfica do MatLab oferece diversos recursos para entrada de dados: Botão, Lista, Controle deslizante, caixa de entrada de texto, etc. Também oferece diversos tipos de saída como plotagem 2D, Saída de texto e painel.

Uma vez definindo o que vai aparecer na sua tela, e onde, então deve se partir para a implementação da interface utilizando o GUI(de). Pode ser chamado digitando GUI na linha do MatLab, ou escolhendo File->New->GUI no menu. Uma vez inicializado o editor gráfico, comece escolhendo no menu os botões, controles, e área de plotagem desejado. Ajuste o tamanho de cada elemento.

Existem basicamente dois elementos que necessitam ser definidos, para integrar com os seus programas: as propriedades e os callbacks.

No editor de propriedade você tem acesso a muitos elementos relativos a cada objeto. (Para acessar o editor de propriedades, clique no botão da direita, enquanto o mouse estiver sobre o elemento, e escolha "Property Inspector". Não fique assustado com a quantidade de propriedades, pois a maioria pode deixar como estar. A minha sugestão é alterar o mínimo possível, ou seja, uns 2 ou 3 elementos.

Veja que as diversas propriedades estão listadas em ordem alfabética. Procure o item chamado "Tag". Este é o nome que será chamado dentro do seu programa para interagir com este elemento (mais a este respeito será discutido abaixo). Sugiro que mude o TAG para alguma coisa fácil de lembrar a que se refere. Pode mudar o nome do primeiro plot para plot1 por exemplo. Uma outra propriedade que pode querer alterar é chamado de "String". Se for uma caixa de texto, este será o texto mostrado (até sera alterado) na caixa. Pode ser mudado para instruir o usuário do programa, ou pode ser deixado em branco. Se o elemento for texto, poderá alterar também o tamanho das letras, alterando o FontSize (inicialmente é definido como sendo 8).

Depois de definir as propriedades de cada elemento, é necessário definir a interação com o programa. Isso é feito usando "callback". Os callbacks são pequenas rotinas que são executadas quando acontece algum evento (clique do mouse, digitação de texto, etc). Cada elemento de sua interface gráfica tem os seus próprios callbacks. Deve ter um callback para a criação do elemento, outro quando deletar o elemento, e outro quando houver alguma intervenção do usuário (via teclado ou mouse). Estas funções devem conter o que fazer quando o usuário interage com o programa. Exemplo: quando o usuário altera alguma entrada, o gráfico deve ser plotado novamente. Se um valor for alterado, a variável deve ser atualizada.


A atualização de algum elemento é feito utilizando o comando "set".
set(handles.texto1,'String','Testando minha interface');
set(handles.temperatura1,'Value','25');
No primeiro "set" temos a "TAG" chamado de texto1, com o tipo String, cujo valor é "Testando minha interface". Veja que a variável "handles" é na realidade uma matriz com vários elementos e no exemplo só alteramos o elemento "texto1" que é a TAG de acesso ao elemento. No segundo "set" não temos uma "string" e sim um Value, onde será atribuido o valor de 25. A TAG que identifica o elemento neste caso é temperatura1. Cada elemento tem uma TAG que deve ser única no seu projeto. Esta TAG será usada para atualizar o elemento.

No caso de um botão, podemos obter o valor do botão utilizando o comando get.
a = get(handles.plot_type,'Value');
A variável "a" vai conter o valor da elemento cuja TAG é "plot_type".
Para ler um texto de um quadro de texto, cuja TAG é texto1, usamos:
str = get(handles.texto1, 'String');
A variável "str" conterá o texto associado.

Nenhum comentário:

Postar um comentário