Форум программистов, компьютерный форум, киберфорум
Наши страницы
Matlab
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.92/12: Рейтинг темы: голосов - 12, средняя оценка - 4.92
dgru22
0 / 0 / 0
Регистрация: 14.03.2012
Сообщений: 5
1

Графический интерфейс НЕ GUI! как избавиться от глобальных переменных?

21.09.2012, 09:49. Просмотров 2129. Ответов 2
Метки нет (Все метки)

Создаю простенький графический интерфейс


Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
function [ output_args ] = interface( input_args )
 
global hAxes hFigl hEdl_vertice_X hEdl_vertice_Y hTxtl_input_vertice hBut_find_pareto hBut_unc hBut_clear hTxtl_X hTxtl_Y 
 
hFigl = figure;
 
hAxes = axes ('Parent', hFigl, 'Color', [1 1 1], 'Units', 'normalized',...
    'Position', [0.05 0.25 0.7 0.7],'FontSize', 10,...%'XLim', [0 100], 'YLim', [0 100],...
    'XTick', [], 'YTick', []);
 
hEdl_vertice_X = uicontrol(hFigl, 'Style', 'edit', 'Units', 'normalized',...
    'BackgroundColor', [1 1 1], 'Position', [0.1 0.13 0.3 0.05],...
    'HorizontalAlignment', 'left', 'String', '[45 50 55]');
 
hEdl_vertice_Y = uicontrol(hFigl, 'Style', 'edit', 'Units', 'normalized',...
    'BackgroundColor', [1 1 1], 'Position', [0.1 0.07 0.3 0.05],...
    'HorizontalAlignment', 'left', 'String', '[30 50 30]');
 
hTxtl_X = uicontrol (hFigl, 'Style', 'text', 'Units', 'normalized',...
    'Position', [0.05 0.14 0.04 0.03], 'String', 'X');
 
hTxtl_Y = uicontrol (hFigl, 'Style', 'text', 'Units', 'normalized',...
    'Position', [0.05 0.08 0.04 0.03], 'String', 'Y');
 
hTxtl_input_vertice = uicontrol (hFigl, 'Style', 'text', 'Units', 'normalized',...
    'Position', [0.05 0.19 0.3 0.03], 'String', 'Input vertices coordinates');
 
hBut_find_pareto = uicontrol(hFigl, 'Style', 'pushbutton', 'Units', 'normalized',...
    'Position', [0.45 0.13 0.2 0.05], 'String', 'Build polygon','Callback', 'build_pareto_image'); 
 
hBut_unc = uicontrol(hFigl, 'Style', 'pushbutton', 'Units', 'normalized',...
    'Position', [0.75 0.13 0.2 0.05], 'String', 'Find uncovered set', 'Callback', 'find_unc'); 
 
hBut_clear = uicontrol(hFigl, 'Style', 'pushbutton', 'Units', 'normalized',...
    'Position', [0.45 0.07 0.2 0.05], 'String', 'Clear axes', 'Callback', 'clear_axes');
 
 
 
end
как видно для хранения указателей на графические объекты, используются глобальные переменные


Matlab M
1
global hAxes hFigl hEdl_vertice_X hEdl_vertice_Y hTxtl_input_vertice hBut_find_pareto hBut_unc hBut_clear hTxtl_X hTxtl_Y
это сделано для того чтобы в callback функциях (они описаны в отдельных файлах) я мог достать значения записанные в Edit элементы

Matlab M
1
2
3
4
5
6
7
hEdl_vertice_X = uicontrol(hFigl, 'Style', 'edit', 'Units', 'normalized',...
    'BackgroundColor', [1 1 1], 'Position', [0.1 0.13 0.3 0.05],...
    'HorizontalAlignment', 'left', 'String', '[45 50 55]');
 
hEdl_vertice_Y = uicontrol(hFigl, 'Style', 'edit', 'Units', 'normalized',...
    'BackgroundColor', [1 1 1], 'Position', [0.1 0.07 0.3 0.05],...
    'HorizontalAlignment', 'left', 'String', '[30 50 30]');
(там стоят простенькие значения по умолчанию, а так пользователь сам вводит)

но мой научрук настаивает на том чтобы в коде не были использованы глобальные перменные,
можно ли передавать указатели на графические объекты как то иначе?
я что то нашел про handles но не смог сам разобраться, желательно передать их вообще как аргумент при вызове
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.09.2012, 09:49
Ответы с готовыми решениями:

Графический интерфейс GUI
Подскажите, как присвоить значение из edit, на код, относящийся, например, к кнопке? что то с get...

Как избавиться от глобальных переменных в многофайловом проекте на С++?
Некоторые глобальные переменные можно заменить на глобальные константы. Долго промучилась с...

База данных "учебный план специальности". GUI. Графический интерфейс. Пользовательский интерфейс
Всем привет. Свалилась на меня, значит, курсовая по прологу. Все бы ничего, да реализовать ее надо...

Графический интерфейс (GUI в Java)
Всем привет, посоветуйте мне какую книжку читать для изучения GUI в Java а то книга Сьерра К....

Подскажите библиотеку GUI, реализующую графический интерфейс
Доброй ночи. Подскажите, пожалуйста, лёгкую и простую библиотеку реализующую графический интерфейс....

2
Sledge5
527 / 517 / 35
Регистрация: 13.03.2011
Сообщений: 715
21.09.2012, 11:15 2
Попробуйте:
1. Во все объекты при создании добавьте свойство Tag. Например, для кнопки можно сделать так:
Matlab M
1
2
uicontrol(hFigl, 'Style', 'pushbutton', 'Units', 'normalized', 'Tag', 'hBut_find_pareto', ...
     'Position', [0.45 0.13 0.2 0.05], 'String', 'Build polygon','Callback', 'build_pareto_image');
2. Во всех функциях обратного вызова (callback) используйте в первой строчке запись
Matlab M
1
handles = guihandles;
Тогда в функции обратного вызова будут доступны все элементы графического интерфейса. Например, для получения надписи на кнопке из ЛЮБОЙ функции обратного вызова нужно написать
Matlab M
1
get(handles.hBut_find_pareto,'String');
а для её изменения
Matlab M
1
set(handles.hBut_find_pareto,'String','Новая надпись на кнопке');
2
dgru22
0 / 0 / 0
Регистрация: 14.03.2012
Сообщений: 5
21.09.2012, 17:08  [ТС] 3
спасибо
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.09.2012, 17:08

Создать графический интерфейс для данной программы (GUI)
//A class describes the attributes and behaviors of an object. class testBook { // instance...

Создать графический интерфейс (GUI) для игры "Крестики-нолики"
#include <stdio.h> #include <string.h> char board={}; void clearscreen(void){ for(int i =...

Как написать программу, не используя глобальных переменных?
Добрый день! Подскажите пожалуйста, как написать программу, не используя глобальных переменных?...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru