GUI

2011-06-23 16 views
7

में ड्रैग और ड्रॉप करें क्या जीयूआई में कोई ऑब्जेक्ट बनाना संभव है, जिसकी स्थिति कर्सर की स्थिति (जिसे क्लिक किया जाता है) द्वारा परिभाषित किया जा सकता है, अपनी स्थिति 'स्थिति' को कर्सर की स्थिति में सेट करके सेट कर सकता है? मुझे किस काम का उपयोग करना चाहिए?GUI

उत्तर

4

आप अपने जीयूआई ऑब्जेक्ट के लिए आगे बढ़ने और आकार बदलने के लिए 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 को केवल पढ़ने के लिए सूचीबद्ध करता है, मैं बिना किसी समस्या के इसे संशोधित करने में सक्षम था। यह प्रलेखन में एक टाइपो होना चाहिए।

+0

तेज प्रतिक्रिया के लिए धन्यवाद! क्या आप मुझे बता सकते हैं कि फ़ंक्शन कहां से इनपुट इनपुट प्राप्त करता है? – straits

+0

@Adam: कौन सा फ़ंक्शन? SELECTMOVERESIZE इनपुट के रूप में कोई तर्क नहीं लेता है। – gnovice

+0

बटन_callback फ़ंक्शन hSource और eventData में ले रहा है। – straits

2

आप अपने जीयूआई में एक अदृश्य अक्ष बना सकते हैं, और जो कुछ भी आप चाहते हैं उसे प्लॉट कर सकते हैं। फिर, आप फ़ाइल एक्सचेंज से DRAGGABLE का उपयोग पूरे स्थान पर ऑब्जेक्ट खींचने की अनुमति के लिए कर सकते हैं।