2013-12-17 5 views
1

Как я могу использовать символ степени при написании графического интерфейса в Matlab? Я могу использовать ^\circ при построении графика, но это не работает при написании графического интерфейса.Как отображать греческие символы в Matlab GUI

Это мой GUI до сих пор:

directory = 'Data'; 
SiteName = 'AAA'; 
done = false; 
spcFrac = 2; %number of spaces = char; 
num2delim = 20; 
defSlt = 'aTemp'; 
loader = 'on'; 

fclose all; 
outputOptions = {'Air temperature','aTemp'}; 
defaults = {'',''}; 
% long names for outputs 
names = {'latitude (deg N)','altitude (m)'}; 
lines = [4,5]; 
[~,b] = sortrows(outputOptions); vL = length(b); 
outN = cell(vL,1);outA = outN;outUn = outN; 
for k = 1:length(b) 
    outUn{k}= outputOptions{b(k),1}; 
    outN{k} = outputOptions{b(k),1}; 
    outA{k} = outputOptions{b(k),2}; 
end 

indx = strcmp(defSlt,outA); 
slt{1} = outN{indx}; 
txt = outA{indx}; 
outN(indx) = []; 

close all 
bckColor = [.85 .85 .85]; 
figDims = [150 150 400 300]; 
lM = 15; 
tM = 20; 
rM = 15; 
bM = 15; 
pnS = 12; 
bgPw = 180; 
bgPh = 120; 
btnH = 25; 
txtH = 20; 
txtW = 40; 
txtS = 5; 
spc = 9; 
radioW = 150; 
radioH = 20; 

bigPanels(1,:) = [lM figDims(4)-bgPh-tM bgPw bgPh]; 
bigPanels(2,:) = bigPanels(1,:); bigPanels(2,1) = bigPanels(2,1)+pnS+bgPw; 
filePanel = [bigPanels(2,1)+bgPw+pnS*2 bM+pnS+btnH ... 
    figDims(3)-bgPw*2-lM-pnS*3-rM figDims(4)-tM-pnS-btnH-bM]; 
btns(1,:) = [lM bigPanels(1,2)-spc-btnH bgPw btnH]; 
btns(2,:) = [bigPanels(2,1) bigPanels(1,2)-spc-btnH bgPw btnH]; 
btns(3,:) = [filePanel(1)+filePanel(3)-bgPw bM bgPw btnH]; 
btns(4,:) = [filePanel(1) bM radioW radioH]; 

numTxtIn = numel(defaults); 
rowsTxt = ceil(numTxtIn/2); 
for p = 1:rowsTxt 
    txtBoxL(p,:) = [lM bM+(p-1)*(pnS+txtH) txtW txtH]; 

    txtBoxR(p,:) = [lM+pnS+bgPw bM+(p-1)*(pnS+txtH) txtW txtH ]; 
    diaL(p,:) = [lM+txtW+txtS -txtS+bM+(p-1)*(pnS+txtH) txtBoxR(p,1)-... 
     lM-txtW-pnS txtH ]; 
    diaR(p,:) = [txtBoxR(p,1)+txtW+txtS -txtS+bM+(p-1)*(pnS+txtH) ... 
     txtBoxR(p,1)-lM-txtW-pnS txtH ]; 
end 
S.fh = figure('units','pixels',... 
       'position',figDims,... 
       'menubar','none',... 
       'resize','off',... 
       'numbertitle','off',... 
       'name','Configuration File','Color',bckColor); 
      movegui(S.fh,'center') 
outFrame=uipanel('Parent',S.fh,'BackgroundColor',bckColor,... 
     'Title','Output options','FontSize',10); 
     setpixelposition(outFrame,[lM-spc btns(1,2)-spc ... 
     bgPw+spc*2 bgPh+btnH+spc*3+pnS]); 

slcFrame=uipanel('Parent',S.fh,'BackgroundColor',bckColor,... 
     'Title','Output selections','FontSize',10); 
     setpixelposition(slcFrame,[bigPanels(2,1)-spc btns(1,2)-spc ... 
     bgPw+spc*2 bgPh+btnH+spc*3+pnS]); 
ParamFrame=uipanel('Parent',S.fh,'BackgroundColor',bckColor,... 
     'Title','User parameters','FontSize',10); 
     setpixelposition(ParamFrame,[btns(1,1)-spc ... 
      bM-spc bgPw*2+pnS+spc*2 btns(1,2)-2*spc-2]); 

for lm = 1:rowsTxt 
    indr = rowsTxt-lm+1; 
S.outT(1,indr) = uicontrol('style','edit',... 
    'units','pix',... 
    'position',txtBoxL(indr,:),... 
    'HorizontalAlign','center',... 
    'string','Remove',... 
    'fontsize',8,'String',defaults{lm,1},... 
    'callback',{@txt_call,lines(lm,1)},... 
    'BackgroundColor','w'); 
S.outT(2,indr) = uicontrol('style','edit',... 
    'units','pix',... 
    'position',txtBoxR(indr,:),... 
    'HorizontalAlign','center',... 
    'string','Remove',... 
    'fontsize',8,'String',defaults{lm,2},... 
    'callback',{@txt_call,lines(lm,2)}... 
    ,'BackgroundColor','w'); 
S.outD(1,indr) = uicontrol('style','text',... 
    'units','pix',... 
    'position',diaL(indr,:),... 
    'HorizontalAlign','left',... 
    'string','Remove',... 
    'fontsize',8,'String',names{lm,1},'BackgroundColor',bckColor); 
S.outD(2,indr) = uicontrol('style','text',... 
    'units','pix',... 
    'position',diaR(indr,:),... 
    'HorizontalAlign','left',... 
    'string','Remove',... 
    'fontsize',8,'String',names{lm,2},'BackgroundColor',bckColor); 
end 

enter image description here

Здесь я хотел бы изменить Дайны в символ степени^\ CI не работает.

ответ

3

В зависимости от символов, которые вы хотите использовать, вы можете использовать либо расширенные символы ascii, либо unicode. Так, например,^\ circ - Alt+0176, который дает вам ° (цифры должны быть введены на клавиатуре, и нуль необходим). µ - Alt+0181 и т. Д. Если это не сработает, вы также можете программно использовать char(). Итак, char(176) даст вам знак степени.

Я должен добавить, что конструкция Alt+0XXX - это MS Windows (она работает еще в 95 AFAIK). Я уверен, что есть аналогичные сочетания клавиш для MacOS и ваш любимый аромат * nix. Команда char работает повсюду.

Ваш пример кода выше, вам просто нужно изменить определение names:

names = {'latitude (°N)','altitude (m)'}; 

или

names = {['latitude (' char(179) 'N)'],'altitude (m)'}; 
+0

+1 Полезно знать! –

+1

У меня есть диаграмма рядом с моим компьютером, которую я сделал в Excel, которая имеет все коды символов до 255 для быстрой справки. Если вы используете Windows, карта символов (в разделе «Аксессуары | Системные инструменты») - ваш друг. – craigim

+0

Я думаю, что проблема с тем, как я это сделал, заключается в том, что она не была написана самыми сложными способами. Пример моей попытки выше. – KatyB

Смежные вопросы