Я пишу графический интерфейс в Scilab и назначаю обратные вызовы для pushbutton
элементов управления.Когда кнопка нажата, другой элемент управления затрагивается, например, текст внутри текстового поля изменяется.Сама вся эта подпрограмма (создание и инициализация GUI) живет внутри функции, то есть мне нужно вызвать мой create_my_gui()
, чтобы запустить ее.
Моя проблема заключается в использовании переменной области действия и обратного вызова.Некоторые из моих кнопок влияют на несколько других элементов управления точно таким же образом, поэтому я хотел бы использовать ту же функцию обратного вызова и передать дескриптор элемента управления, на который я пытаюсь воздействовать, в обратный вызов.
Например, когдаЯ нажимаю N -ю кнопку, я хотел бы передать дескриптор N -й элемент управления в обратный вызов:
function buttonPressCallback ( controlHandle )
controlHandle.string = 'Button pressed!';
endfunction
Проблема в том, что обратные вызовыопределяются как строки:
myButton3.callback = 'buttonPressCallback ( myTextBox3 )'
И после того, как я запустил мою функцию create_my_gui()
, все переменные выходят из области видимости и уничтожаются, включая дескрипторы для всех элементов управления.Когда я нажимаю кнопку, Scilab пытается запустить любую строку, указанную в качестве обратного вызова, и жалуется на переменную, например, myTextBox3
, не существующую.
Есть ли способ ссылаться на uicontrols в Scilab послефункция, которая их создала, вышла?Я понимаю, что у Scilab есть очень своеобразные способы решения проблем, и, возможно, я просто пока не думаю о правильных шаблонах программирования Scilab.Есть ли «правильный» способ сделать это?