Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/65: Рейтинг темы: голосов - 65, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 04.04.2012
Сообщений: 5
1

Несколько окон в GUI Matlab. Ввод данных в одном из них и использование в другом

28.03.2014, 16:43. Показов 12996. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток!

Помогите пожалуйста, сам не могу догадаться.
Имеется главное графическое окно программы (1.fig) и основной m-файл(1.m). На нем кнопка. По нажатию на эту кнопку открывается второе окно (2.fig) со своим m-файлом(2.m) с полями Edit и одной кнопкой. По задумке, числа введенные в эти поля по нажатию на кнопку, должны записываться в переменные в коде m-файла (2.m) и быть доступны для использования в основной программе (1.m). В чем тонкость?

Если в 2.m в функции обработки нажатия кнопки написать m1=str2double(get(handles.Edit1,'String'))
То по нажатию на кнопку вылетает следующая ошибка
Attempt to reference field of non-structure array.

Прошу помощи. Заранее спасибо!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.03.2014, 16:43
Ответы с готовыми решениями:

Объектно-ориентированное программирование в MATLAB GUI и проверка на ввод некорректных данных
Здравствуйте! Решил научиться писать программы на MATLAB с использованием MATLAB GUI и среды...

Несколько окон в одном
В главном окне есть 4 баттона. Как сделать так , чтобы по нажатию на одну кнопку у меня на форме...

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

GUI на PyQt. Несколько виджетов в одном окне
Доброго времени суток. Необходима помощь по данному сабжу. Суть вопроса в следующем: создаю...

6
120 / 113 / 30
Регистрация: 29.03.2012
Сообщений: 252
28.03.2014, 17:01 2
используй глобальные переменные. В каждой функции GUI, в которой ты хочешь обратиться к глобальной переменной, пиши:
Matlab M
1
global A; %A-название переменной
0
0 / 0 / 0
Регистрация: 04.04.2012
Сообщений: 5
28.03.2014, 17:35  [ТС] 3
kav0221, Пробовал самым первым, не в этом дело.

Что интересно, если допустим запустить напрямую файл 2.m, то программа работает как надо. Значения из полей Edit записываются в переменные. т.е. получается второе окно, запущенное из под первого, не работает как надо. Структура handle в нем пустая.

Добавлено через 5 минут
Как "заставить" программу при открытии 2ого окна, записать указатели на все существующие в этом окне объекты?
0
120 / 113 / 30
Регистрация: 29.03.2012
Сообщений: 252
28.03.2014, 17:36 4
Можешь выложить архив со своими окнами и подробное описание как все должно работать?
0
0 / 0 / 0
Регистрация: 04.04.2012
Сообщений: 5
28.03.2014, 22:42  [ТС] 5
Смысл следующий:

Запускается главное окно Gui_main.fig. После нажатия кнопки Задать критерий качества, появляется окно с полями Edit. В которые необходимо ввести нужные значения и записать их в определенные переменные, которые по нажатию кнопки ОК, должны быть доступны для дальнейших операций в первом окне( в m-файле gui_main.m).
Проблема в том, что если оперировать 2 окном, вызванным из первого основного, то получается что поля edit как бы нигде не объявлены в handles и поэтому из них невозможно списать значения.
Вложения
Тип файла: zip GUI v1.zip (59.2 Кб, 107 просмотров)
0
120 / 113 / 30
Регистрация: 29.03.2012
Сообщений: 252
29.03.2014, 19:17 6
Лучший ответ Сообщение было отмечено Seris2 как решение

Решение

С глобальными переменными все прекрасно работает. Что поменял:
С открытием главного окна создается некая глобальная переменная АА, которой присваивается значение АА=[];
При нажатии на кнопку KritStabEdit_Btn мы отображаем переменную АА и открываем окно Krit_Stab. Тут важная тонкость, открывать окно нужно ИМЕННО ТАК:
Matlab M
1
Krit_Stab;
А не так:
Matlab M
1
open('Krit_Stab.fig');
Далее мы вводим некие параметры и с нажатием кнопки ОК, с поля t2_Edit считывается значение функцией:
Matlab M
1
2
global AA;
AA=(get(handles.t2_Edit,'String'));
Сделал только для одного окна и для одного поля, для остальных по аналогии сделаешь.
Итак мы присвоили глобальной переменной АА значение с поля t2_Edit, и теперь при нажатии на кнопку KritStabEdit_Btn в командное окно выводится уже новое значение переменной АА, равное тому, что мы ввели в поле t2_Edit. Собственно что и требовалось сделать=)
Вложения
Тип файла: rar GUI v1.rar (56.4 Кб, 236 просмотров)
4
0 / 0 / 0
Регистрация: 04.04.2012
Сообщений: 5
30.03.2014, 13:06  [ТС] 7
kav0221,
Спасибо огромнейшее! Действительно работает. Не знал про такую тонкость, что будет открывать новое окно просто вписав его имя.
Буду двигаться дальше в разработке)
0
30.03.2014, 13:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.03.2014, 13:06
Помогаю со студенческими работами здесь

Перегрузка оператора индексации в одном классе и использование в другом
Вообщем проблема состоит в том, что не понимаю как это сделать. Есть класс Document в нем есть...

Несколько ОС на одном компе. Как одну из них переустановить, не повредив остальные?
На разных разделах диска установлены 3 ОС: 98, XP(просто) и XP SP3. При загрузке выбираю в менюшке....

GUI: Проверка на ввод некорректных данных
как сделать чтобы в поле edit можно было вводить только числовые значения? при вводи букв и т.п....

Например у меня есть два класса. В одном из них несколько строк.Как во втором классе создать условие что если
Например у меня есть два класса. В одном из них несколько строк.Как во втором классе создать...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru