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」,導致一點工具欄。我更新了代碼,必須有兩個調用來強調這一點。
它保留在我的系統(R2014b)上,但也許你可以嘗試檢查工具欄句柄'gui_toolbar.isvalid',看看它是否不可見,在這種情況下,你可以重新打開它。 – chappjc 2014-11-04 19:54:15
還要確保圖的'WindowStyle'屬性沒有設置爲'模態':檢查'提示'部分:http://www.mathworks.com/help/matlab/ref/uitoolbar.html – 2014-11-04 20:05:13
謝謝爲建議。我也使用R2014b,但意識到它只是導致工具欄消失的第二次imshow調用(我在我的問題中澄清了這一點)。在隨後的「imshow」調用中,「isvalid」變爲false,並且訪問其他工具欄屬性會導致「已刪除對象」錯誤。該窗口不是模態。 – 2014-11-05 00:21:38