একটি অ্যাপ তৈরি করা হচ্ছে (ভাল + জিটিকে ৩) [তৃতীয় অংশ]

এই অংশে আমরা কীভাবে অন্য উইন্ডো তৈরি করব এবং এটি জিটিকে দিয়ে ডিজাইন করব। আমরা কয়েকটি কার্যকারিতাও দেখতে পাব যেমন প্রশ্ন যুক্ত করা এবং তিনটি বোতাম ব্যবহার করা (50%, জমা এবং পাস)।

টুলবার এবং টুলবটন ton

একটি টুলবার তৈরি করুন:

app2

একটি টুলবটন তৈরি করা, এই ক্ষেত্রে আমরা একটি আইকন রাখব (আপনি ডিফল্টরূপে অনেকগুলি আইকন খুঁজে পেতে পারেন) এখানে) «থেকে_স্টক (Gtk.Stock.IconName) সহ:

2013-12-07 23:26:52 থেকে ক্যাপচার করুন

আমরা দেখতে পাচ্ছি যে আমাদের আবেদনে আমাদের শীর্ষে দুটি বোতামের একটি বার রয়েছে, যেখানে আমরা প্রথম নতুন প্রশ্ন তৈরি করতে এবং দ্বিতীয়টি প্রশ্নগুলি আমদানি করতে (একটি ফাইলের মাধ্যমে) ব্যবহার করব:

2013-11-08 00:30:32 থেকে ক্যাপচার করুন

প্রশ্ন তৈরি করা:
আমরা যে বোতামটি আগে তৈরি করেছি (টুলবারে) এটিতে ক্লিক করার পরে আমরা একটি নতুন জিটিকে উইন্ডো খুলব যা আমাদের ডাটাবেসে প্রশ্ন যুক্ত করতে দেবে:

app1

একটি নতুন উইন্ডো তৈরি করার জন্য আমরা একটি নতুন শ্রেণি তৈরি করব, যা আমরা প্রশ্নগুলি বলব এবং কীভাবে আমাদের অ্যাপ ক্লাস একটি নতুন উইন্ডো তৈরি করবে (this.window = new Gtk.Window ();)

গ্রাফিকাল ইন্টারফেসটি ক্রমে তৈরি করতে আমরা কয়েকটি উপাদান ব্যবহার করব;

- লেবেল (প্রশ্ন)

- প্রবেশ (যেখানে আমরা প্রশ্নটি লিখব)

- লেবেল (প্রতিক্রিয়া)

- 4 অনুভূমিক বাক্সগুলিতে একটি এন্ট্রি (উত্তর) এবং একটি স্যুইচ থাকবে (এটি সঠিক কিনা তা নির্বাচন করতে)

-বাটন (সম্পূর্ণ করতে)

এটি দেখতে কেমন তা আমরা দেখতে পারি:

2013-12-08 01:07:08 থেকে ক্যাপচার করুন

প্রশ্নটি সংরক্ষণ করতে আমাদের এন্ট্রিগুলির পাঠ্য পেতে হবে, সেগুলি get_text () দিয়ে প্রাপ্ত হবে যা একটি স্ট্রিং দেয় returns

app5

যদি কোনও স্যুইচ সক্রিয় আছে কিনা তা জানতে আমরা এর পদ্ধতিটি ব্যবহার করতে পারি get_active () এটি চালু থাকলে সত্যটি ফিরে আসে এবং বন্ধ থাকলে তা ভাসমান।

 50%, জমা এবং পাস বোতাম:

 পঞ্চাশ%:

50% এর জন্য আমাদের কেবলমাত্র সঠিক বাটনটি দেখতে হবে এবং সঠিক নয় এমন 2 টি সরিয়ে ফেলতে হবে, এক্ষেত্রে আমরা সেট_সেন্সিটিভ (মিথ্যা) দিয়ে তাদের বাতিল করি।

app4

ফলাফল:

app6

-বরফে পরিণত করা:

আমরা বারটি আবার 0 তে সেট করেছিলাম।

এটি.টাইম_বার.সেট_ফ্রাকশন (0);

-পাস:

button3.clicked.connect (() => {
this.bd_select_preguntas ();
this.next_pregunta();
});

 পরবর্তী অংশ (4):

পরবর্তী কিস্তিতে আমরা আমাদের আবেদনের দিকগুলি কীভাবে উন্নত করব তা দেখতে পাব, যেমন প্রশ্নগুলি সর্বদা একই অবস্থানে উপস্থিত হয় না, অ্যাপটিতে একটি আইকন রাখে ...


আপনার মন্তব্য দিন

আপনার ইমেল ঠিকানা প্রকাশিত হবে না। প্রয়োজনীয় ক্ষেত্রগুলি দিয়ে চিহ্নিত করা *

*

*

  1. ডেটার জন্য দায়বদ্ধ: মিগুয়েল অ্যাঞ্জেল গাটান
  2. ডেটার উদ্দেশ্য: নিয়ন্ত্রণ স্প্যাম, মন্তব্য পরিচালনা।
  3. আইনীকরণ: আপনার সম্মতি
  4. তথ্য যোগাযোগ: ডেটা আইনি বাধ্যবাধকতা ব্যতীত তৃতীয় পক্ষের কাছে জানানো হবে না।
  5. ডেটা স্টোরেজ: ওসেন্টাস নেটওয়ার্কস (ইইউ) দ্বারা হোস্ট করা ডেটাবেস
  6. অধিকার: যে কোনও সময় আপনি আপনার তথ্য সীমাবদ্ধ করতে, পুনরুদ্ধার করতে এবং মুছতে পারেন।

  1.   f3niX তিনি বলেন

    আমি উত্তরগুলি ভালবাসি ... হাহাহা .. শুভেচ্ছা

  2.   পাঁচমোড়া তিনি বলেন

    ভাল সম্পর্কে এই নিবন্ধগুলি .. আমি আশা করি অন্যদের .. শুভেচ্ছা

  3.   cr0t0 তিনি বলেন

    আমি ভালায় আপনার প্রবেশের জন্য মুলতুবি রয়েছি, আমি আশা করি অনেক বিতরণ হবে। চিয়ার্স!

  4.   pptru তিনি বলেন

    সুন্দর নিবন্ধ, ভাগ করে নেওয়ার জন্য ধন্যবাদ।

  5.   হীরম তিনি বলেন

    হ্যালো,

    আমি এই অ্যাপটি তৈরির জন্য আপনার পূর্ববর্তী এন্ট্রিগুলি অনুসরণ করেছি, সমস্যাটি এখন এসেছিল যে আমি নতুন উইন্ডোটির এন্ট্রিগুলি অ্যাক্সেস করার চেষ্টা করি, আমি ক্রিয়েকিউশনেশন ক্লাসের সেভসি পদ্ধতিতে (উইন্ডো তৈরি করে এমন শ্রেণি) ।

    পাবলিক অকার্যকর সেভসি () {
    স্ট্রিং str = questionE.get_text ();
    stdout.printf ("চুক্তি% s \ n", str);
    }

    তবে আউটপুট এ আমি পেয়েছি:
    (bu: 6196): Gtk-CRITICAL **: gtk_entry_get_text: দৃser়তা `GTK_IS_ENTRY (এন্ট্রি) 'ব্যর্থ হয়েছে

    চুক্তি (নাল)

    আমি কয়েকটি উদাহরণ এবং পদ্ধতিগুলির সংজ্ঞাতে দেখেছি যে এন্ট্রিগুলিতে অ্যাক্সেস তারা এ জাতীয় কিছু করে:

    অকার্যকর_অ্যাক্টিভেট (Gtk.Entry এন্ট্রি) {
    নাম = enter.get_text ();
    মুদ্রণ ("\ n হেলো" + নাম + "! \ n \ n");
    }

    তবে তাদের কেবল একটি প্রবেশ রয়েছে এবং এই উদাহরণে 5 রয়েছে, সুতরাং এখানে আমি ইতিমধ্যে হারিয়ে গিয়েছি, আপনি আমাকে আরও ভালভাবে গাইড করতে পারেন।

    1.    ললিম্বো তিনি বলেন

      ঠিক আছে, আপনি এন্ট্রিগুলি তৈরি করার সময় আপনি যে পাঠ্যটি করছেন তা পেতে তাদের একই নাম দেয় না:

      r1 = এন্ট্রি 1.get_text ();
      r2 = এন্ট্রি 2.get_text ();
      r3 = এন্ট্রি 3.get_text ();
      r4 = এন্ট্রি 4.get_text ();

      আপনি যদি চান, একটি পেস্টবিন লাগান এবং আমি এটি তাকান

      1.    হীরম তিনি বলেন

        ললম্ব্বো যদি বাস্তবে আমার কাছে তাদের আলাদা আলাদা নাম থাকে তবে আমি কেবল পরীক্ষার জন্য একটি ব্যবহার করছি যেহেতু এন্ট্রিতে আমি যে লেখাটি পাঠিয়েছি তা কেউই ফেরত দেয় না, এটি আমাকে উপরে উল্লিখিত ত্রুটিটি প্রেরণ করে:

        তবে আউটপুট এ আমি পেয়েছি:
        (bu: 6196): Gtk-CRITICAL **: gtk_entry_get_text: দৃser়তা `GTK_IS_ENTRY (এন্ট্রি) 'ব্যর্থ হয়েছে

        চুক্তি (নাল)

        আমি এখনও তদন্ত করছি ...

        চিয়ার্স। !!

      2.    হীরম তিনি বলেন

        এখানে প্রস্তুত উত্স, শুভেচ্ছা।
        http://pastebin.com/pZG8GbrY

    2.    ললিম্বো তিনি বলেন

      হাই হীরাম, দেখুন, আমি আপনাকে বলব যে এটি সমাধানের জন্য আপনাকে কী করতে হবে, এটি প্রথম ঘটবে কারণ আমরা একটি নতুন উইন্ডো তৈরি করছি (এটি মূলটি নয়), এবং প্রবেশের ডাক দেওয়ার সময়, ( শব্দের জন্য দুঃখিত) আমি জানি না কেন সেই ছিটে ফিরবে না কেন যেন এটি একটি এন্ট্রি তবে একটি উইজেট, তবে হেই, সমাধান করার জন্য আপনাকে কেবলমাত্র স্থির সমস্ত উপাদান পরিবর্তন করতে হবে যা আপনি ভেরিয়ে ব্যবহার করে গতিশীল করেছিলেন:

      var questionE = নতুন Gtk.Entry ();

      তারপরে ফাংশনটি কাজ করবে এবং আপনি প্রবেশের ভিতরে টেক্সটটি পাবেন।

      save.clicked.connect (() =>
      // স্ট্রিং str = this.questionE.get_text ();
      stdout.printf ("চুক্তি% s \ n", AskE.get_text ());
      });

      শেষ অবধি, আপনি যেখানে লাইনটি এন্ট্রি যুক্ত করবেন তা পরিবর্তন করতে ভুলবেন না:

      জিজ্ঞাসা.শো ();

      আমি আপনাকে সংশোধন সহ সম্পূর্ণ কোডটি রেখেছি যাতে আপনি এটি পরীক্ষা করে দেখতে পারেন যে এটি ইতিমধ্যে কাজ করে, অর্থাৎ আপনাকে অবশ্যই অ্যাপ্লিকেশনটি চালিয়ে যাওয়ার জন্য সমস্ত উপাদান (কমপক্ষে এন্ট্রি) পরিবর্তন করতে হবে।

      http://paste.desdelinux.net/5048

      শুভেচ্ছা

      1.    হীরম তিনি বলেন

        চেল, এখানে আবার বিরক্ত করেও আমার এখনও সমস্যা আছে, আপনি আমাকে যে কোডটি দেখিয়েছেন তা ঠিক আছে, ইভেন্টে কেবল কিছু ঘটে:

        save.clicked.connect (() =>
        // স্ট্রিং str = this.questionE.get_text ();
        stdout.printf ("চুক্তি% s \ n", AskE.get_text ());
        });

        এটি প্রশ্ন শ্রেণীর অভ্যন্তরে রয়েছে এবং এটি ঠিক আছে তবে যখন সেভসি থেকে প্রবেশ করতে চান, এটি সংকলন করে না, এটি আমাকে এই ত্রুটি ছুঁড়ে ফেলে:

        bu01.vala: 50.38-50.50: ত্রুটি: তর্ক 1: `প্রশ্নের.SaveC 'থেকে Gtk.Button.clicked' তে রূপান্তর করা যায় না
        this.guardar.clicked.connect (this.guardarC);
        ^^^^^^^^^^^^^^
        bu01.vala: 251.58-251.66: সতর্কতা: Gtk.Stock ৩.১০ সাল থেকে অবচিত করা হয়েছে
        bu01.vala: 260.59-260.67: সতর্কতা: Gtk.Stock ৩.১০ সাল থেকে অবচিত করা হয়েছে
        সংকলন ব্যর্থ: 1 ত্রুটি, 2 সতর্কতা (গুলি)

        ক্লিক ইভেন্টটি যখন ঘটে তখন আমি প্যারামিটারটি পাস করার কারণেই এটি ভাবতে চাই:
        this.guardar.clicked.connect (this.guardarC);

        প্রতিক্রিয়ার জন্য আগাম ধন্যবাদ; এখানে আমি কোডটি রেখেছি যা ত্রুটি ছুড়ে ফেলেছে: http://pastebin.com/pLzExhrb

      2.    ললিম্বো তিনি বলেন

        আমি এটি পরীক্ষা করে দেখিনি তবে আমি মনে করি ফাংশন থেকে যুক্তি সরিয়ে ফেলা হবে throw

        পাবলিক অকার্যকর সেভসি (Gtk.Entry জিজ্ঞাসা E) {
        স্ট্রিং str = questionE.get_text ();
        stdout.printf ("চুক্তি% s \ n", str);
        }

        a:
        পাবলিক অকার্যকর সেভসি () {
        স্ট্রিং str = questionE.get_text ();
        stdout.printf ("চুক্তি% s \ n", str);
        }

      3.    হীরম তিনি বলেন

        ললবিম্বো, আমি যুক্তিটি সরিয়ে দেওয়ার চেষ্টা করেছি এবং এটি এখনও কার্যকর হয় না,

        আমি এখনও সমস্যাটি বোঝার চেষ্টা করছি, আমি ভালায় নতুন এবং আমি খুব বেশি ডকুমেন্টেশন পাচ্ছি না, আমি আশা করি শীঘ্রই সমাধানটি সন্ধান করবেন বা আপনার চতুর্থ অংশের এক্সডি প্রকাশের অপেক্ষায় থাকব।

        আমি চেষ্টা করছি ...

        গ্রিটিংস।