2014-11-04 69 views
0

我正嘗試在Matlab中創建一個簡單的GUI腳本來顯示一系列圖像,並提供與當前圖像相關的基本功能的工具欄。但我注意到,調用「imshow」會導致圖形窗口中的自定義工具欄消失。任何想法如何改變行爲,使工具欄持續存在?或者不受「imshow」電話的影響?自定義工具欄消失,調用imshow

相關的代碼是:

% create viewer window 
win_viewer = figure('Visible', 'on', 'Name', 'Sample', ... 
    'Position', [0 0 200 200], 'NumberTitle', 'off', 'Toolbar', ... 
    'none', 'MenuBar', 'none', 'Resize', 'off', 'Color', ... 
    [0 0 0]); 

gui_toolbar = uitoolbar('Parent', win_viewer); 

% add save button 
icons = load('icons.mat'); 
gui_save = uipushtool('Parent', gui_toolbar, 'CData', icons.disk{1}, ... 
    'ClickedCallback', {@cb_saveImage}, 'TooltipString', ... 
    'Save Movie'); 

% create axes 
win_axes = axes('Parent', win_viewer); 
axis off; 

% this is called multiple times 
imshow(im, 'Parent', win_axes, 'Border', 'tight'); 
imshow(im, 'Parent', win_axes, 'Border', 'tight'); 

直到 「imshow」 的號召,在工具欄顯示和按預期工作。但是,一旦顯示圖像,工具欄就會消失。

編輯:我只是玩了一下,它只是隨後調用「imshow」,導致一點工具欄。我更新了代碼,必須有兩個調用來強調這一點。

+0

它保留在我的系統(R2014b)上,但也許你可以嘗試檢查工具欄句柄'gui_toolbar.isvalid',看看它是否不可見,在這種情況下,你可以重新打開它。 – chappjc 2014-11-04 19:54:15

+0

還要確保圖的'WindowStyle'屬性沒有設置爲'模態':檢查'提示'部分:http://www.mathworks.com/help/matlab/ref/uitoolbar.html – 2014-11-04 20:05:13

+0

謝謝爲建議。我也使用R2014b,但意識到它只是導致工具欄消失的第二次imshow調用(我在我的問題中澄清了這一點)。在隨後的「imshow」調用中,「isvalid」變爲false,並且訪問其他工具欄屬性會導致「已刪除對象」錯誤。該窗口不是模態。 – 2014-11-05 00:21:38

回答

0

嘗試使用imshow之前設置工具欄的HandleVisibility屬性爲off

+0

太棒了,這就是訣竅!謝謝。 – 2016-11-07 12:30:26