2012-02-15 9 views
11

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

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

+0

'आम तुतलाना जीयूआई टूलकिट के लिए एक वेब खोज 'कई को चालू करना प्रतीत होता है, इसलिए मुझे लगता है कि व्यवहार्यता आश्वस्त है। – phils

उत्तर

7

LTK पर एक नज़र डालें, जो कि जीयूआई टूलकिट के साथ इंटरफेसिंग के लिए एक रैपर है। इसके साथ शुरू करना बहुत आसान है और इसे सरल एप्लिकेशन के लिए पर्याप्त होना चाहिए।

+0

क्या मैं एलटीके को साजिश उपकरण के रूप में भी उपयोग कर सकता हूं? या मेरे लिए gnuplot या कुछ अन्य साजिश उपकरण का उपयोग करना बेहतर होगा? – YBE

+0

मैंने कभी ऐसा नहीं किया है, लेकिन सीएनजी (http://www.cliki.net/cgn) चाल चल रहा है - बस इसे quicklisp के साथ स्थापित किया और सफलतापूर्वक परीक्षण कोड चलाया। –

4

यदि आप यूनिक्स-आईएसएच वातावरण में हैं, तो आप cl-gtk2 या commonqt या यहां तक ​​कि CLIM भी आजमा सकते हैं। इसके अलावा, यूआई टूलकिट की आपकी पसंद इस बात पर निर्भर करती है कि आप किस सामान्य लिस्प कार्यान्वयन का उपयोग कर रहे हैं। Lisp Works और Allegro CL दोनों अपने स्वयं के यूआई टूलकिट के साथ आते हैं, जो काम (अधिक या कम) मंच स्वतंत्र होते हैं।

9

मैं LTK का उपयोग करने के लिए सुझाव देता हूं।

हालांकि, यदि आपकी आवश्यकताओं एलटीके प्रदान करता है उससे परे बढ़ती है (और आप बुनियादी जावास्क्रिप्ट + एचटीएमएल + सीएसएस सीखने में कुछ समय व्यतीत कर सकते हैं - शायद इसका मतलब है कि आप "उन्नत सामान" से बचने का सवाल नहीं उठाते हैं), तो आपको मिल सकता है यह आपके आवेदन के लिए एक वेब इंटरफेस बनाने के लिए उपयोगी है।

क्योंकि मैं सीएल में पोर्टेबल GUIs लिखने के लिए एक नि: शुल्क सभ्य विकल्प नहीं मिल सकता है, मैं वेब डेस्कटॉप एप्लिकेशन की बजाय एप्लिकेशन लिखना (और उन्हें डेस्कटॉप क्षुधा के रूप में उपयोग करने का फैसला किया - जो है, कंप्यूटर जहां पर सर्वर प्रारंभ मेरा मतलब है कि एप्लिकेशन का उपयोग करना, ब्राउज़र में पेज खोलना और डेस्कटॉप ऐप के रूप में इसका इलाज करना; अगर ऐसा कुछ है जो मैं जावास्क्रिप्ट में नहीं कर सकता, जैसे नेटवर्क एक्सेस आदि, मैं इसे सर्वर पर करता हूं)। इसने महान पोर्टेबिलिटी का लाभ उठाया है (अभी इसका मतलब है कि मैं एसबीसीएल का उपयोग करके लिनक्स पर विकसित हूं और क्लोजर सीएल का उपयोग कर विंडोज पर तैनाती करता हूं, और यह अब तक बहुत अच्छा काम करता है)।

मैं वर्तमान में इस तरह के एक आवेदन पर प्रगति काफी खुश हूं, Hunchentoot (CLize जावास्क्रिप्ट को) (सामग्री को होस्ट करने के लिए) + Parenscript का उपयोग कर + JQuery (ब्राउज़र असंगतियां वश में करने के) + JQueryUI (ब्राउज़रों में यूआई लेखन को वश में करने)। जेएस प्रदर्शन के बारे में चिंता न करें, यह pretty spectacular इन दिनों है (ठीक है, यदि आप IE9 से पहले आईईएस को अनदेखा कर सकते हैं और हालिया ब्राउज़र का उपयोग कर सकते हैं)। कुछ हफ्ते पहले मैंने इन सभी का उपयोग करके a simple 'hello world'-type application लिखा था (JQueryUI को छोड़कर, लेकिन यह जोड़ना आसान है); यह मेरे मतलब का एक न्यूनतम उदाहरण के रूप में उपयोगी हो सकता है।

1

मैंने अभी तक कुछ सुझावों के साथ खेला है, मेरे अनुभव में क्यूटी और जीटीके बाइंडिंग ने काम पूरा किया है, लेकिन वे अभी भी थोड़ा सी/सी ++ - आईएसएच महसूस करते हैं, जो मुझे पसंद नहीं है। मैंने LispWorks के मुफ्त संस्करण के साथ खेलना शुरू किया और मैं सीएपीआई से बहुत प्रभावित था, लेकिन मुझे इस बिंदु पर एक वाणिज्यिक लाइसेंस में निवेश करने की कोई ज़रूरत नहीं है (इसलिए क्षमता) मैंने उदाहरण के साथ खेलने के अलावा कुछ भी नहीं किया है क्षुधा।

मैं वेब आधारित यूआई में देखने की सिफारिश को दूसरी बार दूंगा। जितना ज्यादा मैं ब्राउजर प्रोग्रामिंग से नापसंद करता हूं, इन दिनों बहुत सारे टूल इसे सहन करने योग्य और संभवतः आनंददायक बनाने के लिए भी हैं, और Restas (हुनचेनोट पर आधारित एक ढांचा) बहुत प्यारा है।

1

इसके अलावा पहले ही उल्लेख किया LTK (जो हमेशा मेरे लिए ठीक काम किया), मैं भी Cells-Gtk के शौकीन, मेरी राय, जीयूआई कोड लिखने के लिए एक अच्छा दृष्टिकोण में हूँ Tilton के Cells रहे हैं, क्योंकि,। (फिर भी, एलटीके के साथ शुरू करना आसान हो सकता है।)

उदाहरण के लिए, यहां एक बहुत ही सरल फारेनहाइट/सेल्सियस (और इसके विपरीत) कनवर्टर के लिए कुछ कोड है जब मैंने सेल-जीटीके के साथ शुरू किया था:

(defun fahrenheit->celsius (fahrenheit/string) 
    (princ-to-string (handler-case 
         (* (- (read-from-string fahrenheit/string nil) 32) 5/9) 
        (error() "NaN")))) 

(defun celsius->fahrenheit (celsius/string) 
    (princ-to-string (handler-case 
         (+ (* (read-from-string celsius/string nil) 9/5) 32) 
        (error() "NaN")))) 

(defmd celsius-fahrenheit-converter (gtk-app) 
    :title "°C <-> °F" 
    :position :center 
    :kids 
    (kids-list? 
    (mk-vbox 
    :kids 
    (kids-list? 
    (mk-hbox 
     :kids 
     (kids-list? 
     (mk-entry :md-name :celsius 
       :init "0" 
       :text (c? (fahrenheit->celsius (widget-value :fahrenheit)))) 
     (mk-label :text "°C"))) 
    (mk-hbox 
     :kids 
     (kids-list? 
     (mk-entry :md-name :fahrenheit 
       :text (c? (celsius->fahrenheit (widget-value :celsius)))) 
     (mk-label :text "°F"))))))) 

नहीं "की गणना" बटन या ऐसा ही कुछ नहीं है - केवल एक प्रविष्टि फ़ील्ड का मान बदल सकते हैं और एक दूसरे को मक्खी पर अद्यतन किया जाएगा। जैसा कि आप देख सकते हैं, सेल स्वचालित रूप से विगेट्स के राज्य परिवर्तनों को संभालता है - केवल सही "नलसाजी" दिया जाना चाहिए।

(यह कोड में कुछ साल पुराना है, और मैं इसे एटीएम परीक्षण करने के लिए कोई प्रकोष्ठों-जीटीके स्थापना है, लेकिन यह जब मैं इसे लिखा था ठीक से काम करते थे।)

संबंधित मुद्दे