2013-12-17 36 views
1

如何在Matlab中編寫GUI時使用度符號?繪圖時我可以使用^\circ,但編寫GUI時這不起作用。如何在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

在這裏,我想改變degN成度的符號^ \保監會不起作用。

回答

3

根據您要使用的符號,您可以使用擴展ascii或unicode符號。所以,例如,^ \ circ是Alt+0176,它給你°(必須在鍵盤上輸入數字,零是必要的)。 µAlt+0181等。如果這不起作用,您也可以編程使用char()。所以char(176)會給你的學位標誌。

我應該補充一點,Alt+0XXX結構是一個MS Windows(它的工作早在95 AFAIK)快捷方式。我敢肯定,MacOS有類似的鍵盤快捷鍵,並且您最喜歡的* nix。指令無處不在。

從你的示例代碼上面,你只需要改變的names定義:

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

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

+1好消息! –

+1

我在Excel中創建的計算機旁邊有一個圖表,其中所有字符代碼最多255個以供快速參考。如果您使用Windows,則字符映射(在「附件」|「系統工具」下)是您的朋友。 – craigim

+0

我認爲我做這件事的方式存在的問題是它沒有以最複雜的方式書寫。我的嘗試的例子如上。 – KatyB