More on the menu fontsize
1 次查看(过去 30 天)
显示 更早的评论
Earlier today I asked a question about increasing the font size of the menu entries without affecting the font size of subsequent plots. Sean graciously answered with the following script:
ii=1;
while ii==1
oldSPPI = get(0,'screenpixelsperinch'); %store old one
set(0,'screenpixelsperinch',200);
kk = menu('choose','me','no me!','go home it''s Friday!');
set(0,'screenpixelsperinch',oldSPPI); %restore
figure;
plot(1:10,1:10),grid
title('Test Plot')
if kk==1
break
end
end
This script removes the problem I had with error messages. But, after it makes the plot using the original smaller font size, it immediately converts the plot back to the larger font size as soon as it returns to the top of the while loop and executes the set statement. So, while the script is idling waiting for a mouse click, the graph has the undesirable large font size. Only if you mouse click on the first choice, "me", and generate kk=1 do you leave the plot in the desired original font size because the while loop does not go back to the first set statement.
Apparently, it is not possible to increase the font size for the menu and leave the plots in their original font size. Is this true?
Thanks,
Dave
0 个评论
采纳的回答
Sean de Wolski
2012-2-27
You misinterpretted by intent. It IS possible to do this, just not with the stock menu() function. You'll have to write your own menu() function (basically a modal figure with a few uicontrols that returns a number. Since you'll be constructing the uicontrols yourself you can give them a nice large fontsize. It should be pretty straightfoward.
Here is something I threw together that should do what you want. It's a bit sloppy on the positioning but could be easily modified to be made pretty:
function selection = mymenu(question,varargin)
%Simple my menu
%
%Usage:
% -selection = mymenu('Choose one please:','monday','tuesday','wednesday')
%
%Inputs:
% -question: string with question
% -options: n strings of options
%
%Outputs:
% -selection: index of selected button
%
%Error checking:
assert(nargin >=2 ,'At least two inputs expected');
assert(ischar(question),'question should be a string');
assert(all(cellfun(@ischar,varargin)), 'options should be strings')
%Build figure:
n = length(varargin); %number of options
hF = figure('windowstyle','modal','units','pix','position',[300 300 200 (n+1)*80]);
uicontrol('style','text','position',[10 (n+1)*70,100,20],'string',question);
for ii = n:-1:1
H(ii) = uicontrol('style','push','units','pix','position',[10 (ii-1)*80 150 60],...
'string',varargin{ii},'fontsize',20,'callback',@select);
end
waitfor(hF)
%Select and close:
function select(src,~)
idx = 1:n;
selection = idx(ismember(H,src));
close(hF)
return
end
end
Save this is in mymenu.m
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Interactive Control and Callbacks 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!