में ड्रैग और ड्रॉप करें क्या जीयूआई में कोई ऑब्जेक्ट बनाना संभव है, जिसकी स्थिति कर्सर की स्थिति (जिसे क्लिक किया जाता है) द्वारा परिभाषित किया जा सकता है, अपनी स्थिति 'स्थिति' को कर्सर की स्थिति में सेट करके सेट कर सकता है? मुझे किस काम का उपयोग करना चाहिए?GUI
GUI
उत्तर
आप अपने जीयूआई ऑब्जेक्ट के लिए आगे बढ़ने और आकार बदलने के लिए SELECTMOVERESIZE फ़ंक्शन का उपयोग कर सकते हैं। फिर आप ऑब्जेक्ट को माउस से क्लिक करके खींच सकते हैं। यह इस रूप में सरल है:
set(hObject,'ButtonDownFcn','selectmoveresize');
क्या इतना आसान है, तो अपने जीयूआई वस्तु एक uicontrol object, जिस स्थिति में आप 'off'
या 'inactive'
को 'Enable'
property स्थापित करने के क्रम में 'ButtonDownFcn'
के लिए द्वारा वस्तु को निष्क्रिय करना होगा है नहीं है 'Callback'
फ़ंक्शन के बजाय फ़ंक्शन निष्पादित करें। यह तब भी सही है जब आपने ऑब्जेक्ट के लिए कॉलबैक परिभाषित नहीं किया है।
आपको ऑब्जेक्ट को चालू और बंद करने के लिए शायद आपके जीयूआई के लिए एक साधन जोड़ने की आवश्यकता होगी, शायद एक अतिरिक्त बटन या मेनू आइटम जिसे आप चुन सकते हैं। यह दिखाने के लिए कि आप इसे पुश बटन के साथ कैसे कर सकते हैं, यहां एक साधारण उदाहरण है जो एक संपादन योग्य टेक्स्ट बॉक्स और पुश बटन के साथ एक आकृति बनाता है जो संपादन योग्य टेक्स्ट बॉक्स को स्थानांतरित करने और आकार बदलने की क्षमता को चालू और बंद करता है:
function GUI_example
hFigure = figure('Position',[100 100 200 200],... %# Create a figure
'MenuBar','none',...
'ToolBar','none');
hEdit = uicontrol('Style','edit',... %# Create a multi-line
'Parent',hFigure,... %# editable text box
'Position',[10 30 180 160],...
'Max',2,...
'String',{'(type here)'});
hButton = uicontrol('Style','pushbutton',... %# Create a push button
'Parent',hFigure,...
'Position',[50 5 100 20],...
'String','Turn moving on',...
'Callback',@button_callback);
function button_callback(hSource,eventData) %# Nested button callback
if strcmp(get(hSource,'String'),'Turn moving on')
set(hSource,'String','Turn moving off'); %# Change button text
set(hEdit,'Enable','inactive',... %# Disable the callback
'ButtonDownFcn','selectmoveresize',... %# Turn on moving, etc.
'Selected','on'); %# Display as selected
else
set(hSource,'String','Turn moving on'); %# Change button text
set(hEdit,'Enable','on',... %# Re-enable the callback
'ButtonDownFcn','',... %# Turn off moving, etc.
'Selected','off'); %# Display as unselected
end
end
end
नोट: हालांकि दस्तावेज़ केवल 'Selected'
property को केवल पढ़ने के लिए सूचीबद्ध करता है, मैं बिना किसी समस्या के इसे संशोधित करने में सक्षम था। यह प्रलेखन में एक टाइपो होना चाहिए।
आप अपने जीयूआई में एक अदृश्य अक्ष बना सकते हैं, और जो कुछ भी आप चाहते हैं उसे प्लॉट कर सकते हैं। फिर, आप फ़ाइल एक्सचेंज से DRAGGABLE का उपयोग पूरे स्थान पर ऑब्जेक्ट खींचने की अनुमति के लिए कर सकते हैं।
तेज प्रतिक्रिया के लिए धन्यवाद! क्या आप मुझे बता सकते हैं कि फ़ंक्शन कहां से इनपुट इनपुट प्राप्त करता है? – straits
@Adam: कौन सा फ़ंक्शन? SELECTMOVERESIZE इनपुट के रूप में कोई तर्क नहीं लेता है। – gnovice
बटन_callback फ़ंक्शन hSource और eventData में ले रहा है। – straits