Skep 'n Vala + Gtk3-app. [1ste deel]

Na die eerste pos Ek het 'n opmerking gelees dat dit beter sou wees om te begin met iets ingewikkelder as 'n 'hallo wêreld', dan maak ek 'n reeks (Of 3 4) plaas 'n eenvoudige toepassing (met vala + gtk 3).

Die toepassing bestaan ​​uit 'n eenvoudige meerkeusevrae-en-antwoord-speletjie (Trivia-tipe), waarin die beantwoording van 3 vrae verkeerdelik eindig (game over), en die doel is om soveel moontlik vrae te beantwoord, vir elke vraag wat u het beperkte tyd om te antwoord.

Design

Die belangrikste ontwerp van ons aansoek is:

artikels

Later sal ons 'n paar knoppies sit wat ons die opsie gee om 50% (twee verkeerde antwoorde uit te skakel), tyd te vries, 'n vraag deur te gee. Almal kan slegs een keer gebruik word, terwyl dit een keer gebruik word.

Ontwerp a Kode
Soos ons in die ontwerp kan sien, kan ons die gtk-elemente sien wat ons sal gebruik:

Antwoorde -> Knoppie.

Vraag -> Etiket.

Tyd -> ProgressBar.

Verkeerde / korrekte punte en vrae -> Benoem.

Ons kan sien dat ons 'n vertikale struktuur het, daarom kan ons GBox vertikaal gebruik.

Kode

int main (string [] args) {Gtk.init (ref args); var venster = nuwe Gtk.Window (); window.title = "app"; window.window_position = Gtk.WindowPosition.CENTRE; window.set_default_size (300, 340); window.destroy.connect (Gtk.main_quit); window.set_border_width (10); // vertical box var box = new Gtk.Box (Gtk.Orientation.VERTICAL, 0); box.set_spacing (10); // Etiket vir die vraag var vraag = nuwe Gtk.Label ("Vraag?"); // tydprogrambalk var time_bar = nuwe Gtk.ProgressBar (); time_bar.set_text ("Tyd"); time_bar.set_show_text (waar); // Antwoordknoppies var respons1 = nuwe Gtk.Button.with_label ("Antwoord 1"); var resposta2 = nuwe Gtk.Button.with_label ("Antwoord 2"); var resposta3 = nuwe Gtk.Button.with_label ("Antwoord 3"); var resposta4 = nuwe Gtk.Button.with_label ("Antwoord 4"); // etikette info var punte = nuwe Gtk.Label ("Punte: 0"); box.pack_start (vraag); box.pack_start (tydbalk); box.pack_start (antwoord1); box.pack_start (resposta2); box.pack_start (resposta3); box.pack_start (resposta4); box.pack_start (punte); window.add (boks); window.show_all (); Gtk.main (); terugkeer 0;}

 

Vaslegging van 2013-11-02 21:44:14

Om die "tyd" te skuif, gebruik ons ​​GLib.Timeout waar elke 500 millisekonde dit geaktiveer sal word (dit is 'n lus waar die veranderlike wat die waarde van ons maat bevat, sal toeneem)

GLib.Timeout.add (500, () => {// Kry die huidige vordering: // (0.0 -> 0%; 1.0 -> 100%) dubbele vordering = time_bar.get_fraction (); // Werk die balk op: progress = progress + 0.01; time_bar.set_fraction (progress); // Herhaal tot 100% return progress <1.0;});

Skakels van belang 
http://www.valadoc.org/#!wiki=index (u kan alle gtk-elemente met hul metodes vind ...)


Die inhoud van die artikel voldoen aan ons beginsels van redaksionele etiek. Klik op om 'n fout te rapporteer hier.

6 kommentaar, los joune

Laat u kommentaar

Jou e-posadres sal nie gepubliseer word nie. Verpligte velde gemerk met *

*

*

  1. Verantwoordelik vir die data: Miguel Ángel Gatón
  2. Doel van die data: Beheer SPAM, bestuur van kommentaar.
  3. Wettiging: U toestemming
  4. Kommunikasie van die data: Die data sal nie aan derde partye oorgedra word nie, behalwe deur wettige verpligtinge.
  5. Datastoor: databasis aangebied deur Occentus Networks (EU)
  6. Regte: U kan u inligting te alle tye beperk, herstel en verwyder.

  1.   lozanotux dijo

    Baie goed, laat ek u vra hoe ek 'n soort TABS kan maak, maar vertikaal, alhoewel dit nie noodwendig tabs hoef te wees nie, dit kan knoppies of ToggleButtons wees, maar ek het die gedrag van 'n tab nodig dat die inhoud daarvan gesien kan word as u 1 raak, die ander oortjie is uitgeskakel, ek weet nie of ek myself verduidelik nie, ek laat 'n prentjie om te sien of u my inligting kan gee om te ondersoek. Dankie!

    BEELD: http://i.imm.io/1jURw.png

    1.    lolbimbo dijo

      Die "uitleg" of die teksverandering (byvoorbeeld)?

  2.   pandev92 dijo

    Katalaanse parla

  3.   verstom dijo

    Dit is baie goed, dit is iets soortgelyk aan wat ek gesoek het, 'n vraag, kan hierdie vraag op enige manier aan die terminale gekoppel word?
    Byvoorbeeld: om te begin neem ek die tyd om te antwoord, ek laat dit onbeperk, en dit is wat ek wil doen.

    Watter lessenaaromgewing wil u installeer?
    KDE
    Gnome 3
    Kaneel
    Unity

    En elkeen hiervan wat gekoppel is aan sy onderskeie installasie-opdrag in die terminale, sudo apt-get install ubuntu-desktop

    1.    lolbimbo dijo

      Ja, u hoef net Process.spawn_command_line_async ("apt-get install ubuntu-desktop") te skryf;

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

  4.   Saúl Uribe dijo

    Uitstekend, ek hou van die boodskap, ek sal oefen (en ek sien om vooruit te gaan), groete