2012-08-01 57 views
0

我在我的matlab gui中有一个名为listBitDepth的popupmenu。matlab popupmenu回调从未调用

我使用

bitDepthStr{1}= ' auto detect '; mapBitDepthToListIndex(1) = 0; 
bitDepthStr{2}= ' 8 bit (256)'; mapBitDepthToListIndex(2) = 8; 
bitDepthStr{3}= '10 bit (1024)'; mapBitDepthToListIndex(3) = 10; 
bitDepthStr{4}= '12 bit (4096)'; mapBitDepthToListIndex(4) = 12; 
bitDepthStr{5}= '14 bit (16384)'; mapBitDepthToListIndex(5) = 14; 
bitDepthStr{6}= '16 bit (65536)'; mapBitDepthToListIndex(6) = 16; 
set(handles.listBitDepth,'String',bitDepthStr); 
set(handles.listBitDepth,'value',1); 

其中工程值填充它。

而且我有一个回调函数

function listBitDepth_Callback(hObject, eventdata, handles) 
val = get(hObject,'Value') 
... 

它但是如果我从弹出菜单中选择列表中的项目不叫。

为什么?

+0

你使用指南创建您的GUI?是否有通过属性检查器指定的回调(或通过代码添加)? – grantnz 2012-08-01 15:09:40

+0

我使用所有回调函数的指南。如果它们不存在,我将它们与属性检查器一起添加。 – 2012-08-02 09:31:43

回答

1

如果在代码行设置后运行到断点后执行以下操作,您会得到什么(handles.listBitDepth,'value',1); ?

get(handles.listBitDepth,'callback') 

你应该看到:

ANS =

@(hObject,eventdata)popuptest('listBitDepth_Callback',hObject,eventdata,guidata(hObject)) 
+0

的确,这就是我所看到的。 – 2012-08-06 08:20:58

+0

现在有效。我改变了他在函数中的代码,不知何故,他回调现在被称为“我不明白为什么”。 – 2012-08-07 07:23:20