How to change inputdlg's editbox into a popup menu?
5 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hellooo dear community!
I want to create a small dialog box which contains 2 different popup-menu. Do we have any built-in function like that? Or can I change inputdlg's editboxes into popup-menus?
Otherwise I have to create a parent figure which contains Ok, Cancel buttons and two uicontrol objects which are popups. I have to code callbacks for all these and it will be way longer than I expected. That's why I want a short quick solution. Do you have any ideas?
1 commentaire
Rik
le 2 Sep 2019
I would argue it isn't that much coding. If you don't use GUIDE it shouldn't take more than 10 minutes to throw something together.
Réponse acceptée
Rik
le 2 Sep 2019
I'll be honest, it took me about 15 minutes, but this should to something similar to what you describe:
selection=doubleDropMenu({'a','b'},{'foo','bar'});
function choices=doubleDropMenu(list1,list2)
%Input a char array or a cellstr, the output is the selection, or 0 when
%the user presses cancel.
f=doubleDropMenu__create_GUI(list1,list2);%create GUI
uiwait(f);%wait for OK or cancel
%retrieve output and close
h=guidata(f);choices=h.choices;close(f);
end
function f=doubleDropMenu__create_GUI(list1,list2)
f=figure('menu','none','Toolbar','none');
h=struct('f',f);
h.button_ok=uicontrol('Parent',f,...
'Style','pushbutton',...
'Units','Normalized',...
'Position',[0.1 0.1 0.3 0.1],...
'String','OK',...
'Callback',@doubleDropMenu__Callback);
h.button_cancel=uicontrol('Parent',f,...
'Style','pushbutton',...
'Units','Normalized',...
'Position',[0.6 0.1 0.3 0.1],...
'String','cancel',...
'Callback',@doubleDropMenu__Callback);
h.list1=uicontrol('Parent',f,...
'Style','popupmenu',...
'Units','Normalized',...
'Position',[0.1 0.6 0.8 0.2],...
'String',list1);
h.list2=uicontrol('Parent',f,...
'Style','popupmenu',...
'Units','Normalized',...
'Position',[0.1 0.3 0.8 0.2],...
'String',list2);
guidata(h.f,h)
end
function doubleDropMenu__Callback(hObject,eventdata)
h=guidata(hObject);
switch hObject
case h.button_ok
h.choices=[get(h.list1,'Value') get(h.list2,'Value')];
case h.button_cancel
h.choices=[0 0];
end
guidata(h.f,h)
uiresume(h.f)
end
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Startup and Shutdown dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!