एक Vala + Gtk3 ऐप बनाना। [पहला भाग]

के बाद पहला पोस्ट मैंने एक टिप्पणी पढ़ी कि "हैलो दुनिया" की तुलना में कुछ अधिक जटिल के साथ शुरू करना बेहतर होगा, फिर मैं एक अनुक्रम बनाऊंगा (3 या 4) एक साधारण एप्लिकेशन बनाकर पोस्ट करें (vala + gtk 3 के साथ)।

आवेदन में एक साधारण बहुविकल्पी प्रश्न और उत्तर गेम (सामान्य ज्ञान प्रकार) शामिल होगा, जिसमें 3 प्रश्नों के उत्तर गलत तरीके से समाप्त होते हैं (गेम ओवर), और उद्देश्य यथासंभव कई प्रश्नों का उत्तर देना है, प्रत्येक प्रश्न के लिए आपके पास सीमित समय है उत्तर देने के लिए।

डिज़ाइन

हमारे आवेदन का मुख्य डिजाइन होगा:

अनुप्रयोग

बाद में हम कुछ बटन लगाएंगे जो हमें 50% (दो गलत उत्तरों को समाप्त करने) का विकल्प देंगे, समय को फ्रीज करेंगे, एक प्रश्न पास करेंगे। उन सभी को केवल एक बार उपयोग किया जा सकता है, एक बार उपयोग किए जाने के दौरान अक्षम किया जा रहा है।

डिजाइन ए कोड
जैसा कि हम डिजाइन में देख सकते हैं हम gtk तत्वों को देख सकते हैं जिनका हम उपयोग करेंगे:

उत्तर -> बटन।

प्रश्न -> लेबल।

समय -> प्रोग्रेसबार।

गलत / सही अंक और प्रश्न -> लेबल।

हम देख सकते हैं कि हमारे पास एक ऊर्ध्वाधर संरचना है इसलिए हम GBox का लंबवत उपयोग कर सकते हैं।

कोड

int main (string [] args) {Gtk.init (ref args); var window = new Gtk.Window (); window.title = "app"; window.window_position = Gtk.WindowPosition.CENTER; window.set_default_size (300, 340); window.destroy.connect (Gtk.main_quit); window.set_border_width (10); // वर्टिकल बॉक्स वर् बॉक्स = नया Gtk.Box (Gtk.Orientation.VERTICAL, 0); box.set_spacing (10); // प्रश्न var प्रश्न के लिए लेबल = नया Gtk.Label ("प्रश्न?"); // prograsive time bar var time_bar = new Gtk.ProgressBar (); time_bar.set_text ("समय"); time_bar.set_show_text (सच); // प्रतिक्रिया बटन var response1 = new Gtk.Button.with_label ("प्रतिक्रिया 1"); var resposta2 = new Gtk.Button.with_label ("जवाब 2"); var resposta3 = new Gtk.Button.with_label ("उत्तर 3"); var resposta4 = new Gtk.Button.with_label ("जवाब 4"); // लेबल जानकारी var अंक = नया Gtk.Label ("अंक: 0"); box.pack_start (सवाल); box.pack_start (time_bar); box.pack_start (उत्तर 1); box.pack_start (resposta2); box.pack_start (resposta3); box.pack_start (resposta4); box.pack_start (अंक); window.add (बॉक्स); window.show_all (); Gtk.main (); वापसी 0;}

2013-11-02 21:44:14 से कब्जा

"समय" को स्थानांतरित करने के लिए हम GLib.Timeout का उपयोग करते हैं जहां हर 500 मिलीसेकंड को सक्रिय किया जाएगा (यह एक लूप है जहां चर है जिसमें हमारे बार का मान बढ़ेगा)

GLib.Timeout.add (500, () => {// वर्तमान प्रगति प्राप्त करें: // (0.0 -> 0%; 1.0 -> 100%) दोहरी प्रगति = time_bar.get_fraction (); // बार अपडेट करें: प्रगति = प्रगति + 0.01; time_bar.set_fraction (प्रगति); // 100% वापसी प्रगति तक दोहराएं <<}});

ब्याज की कड़ियाँ 
http://www.valadoc.org/#!wiki=index (आप सभी gtk तत्वों को उनके तरीकों से पा सकते हैं ...)


अपनी टिप्पणी दर्ज करें

आपका ईमेल पता प्रकाशित नहीं किया जाएगा। आवश्यक फ़ील्ड के साथ चिह्नित कर रहे हैं *

*

*

  1. डेटा के लिए जिम्मेदार: मिगुएल elngel Gatón
  2. डेटा का उद्देश्य: नियंत्रण स्पैम, टिप्पणी प्रबंधन।
  3. वैधता: आपकी सहमति
  4. डेटा का संचार: डेटा को कानूनी बाध्यता को छोड़कर तीसरे पक्ष को संचार नहीं किया जाएगा।
  5. डेटा संग्रहण: ऑकेंटस नेटवर्क्स (EU) द्वारा होस्ट किया गया डेटाबेस
  6. अधिकार: किसी भी समय आप अपनी जानकारी को सीमित, पुनर्प्राप्त और हटा सकते हैं।

  1.   लोज़ानोटॉक्स कहा

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

    छवि: http://i.imm.io/1jURw.png

    1.    लोलिम्बो कहा

      "लेआउट" या पाठ परिवर्तन (उदाहरण के लिए)?

  2.   पांडव92 कहा

    कैटलन पारला

  3.   दंग रह कहा

    यह वास्तव में बहुत अच्छा है यह कुछ वैसा ही है जैसा मैं देख रहा था, एक प्रश्न, क्या यह प्रश्न किसी तरह से टर्मिनल से जुड़ा हो सकता है?
    उदाहरण के लिए: शुरू करने के लिए मुझे जवाब देने के लिए समय लगता है कि मैं इसे असीमित में छोड़ दूं और यही वह होगा जो मैं करना चाहूंगा।

    आप क्या डेस्कटॉप वातावरण स्थापित करना चाहते हैं?
    केडीई
    सूक्ति 3
    दालचीनी
    एकता

    और इनमें से प्रत्येक जो टर्मिनल में अपने संबंधित इंस्टॉलेशन कमांड से जुड़ा था, sudo apt-get install ubuntu-desktop

    1.    लोलिम्बो कहा

      हां, आपको बस Process.spawn_command_line_async ("apt-get install ubuntu-desktop") लिखना होगा;

      http://valadoc.org/#!api=glib-2.0/GLib.Process.spawn_command_line_sync

  4.   शाऊल उरीबे कहा

    बहुत बढ़िया, मुझे पोस्ट पसंद है, मैं अभ्यास करूंगा (और मुझे आगे बढ़ना है), शुभकामनाएं