Vala + Gtk3 alkalmazás létrehozása. [1. rész]

Után első bejegyzés Olvastam egy megjegyzést, hogy jobb lenne valami komplexebbel kezdeni, mint egy "hello world" -vel, majd elkészítek egy sorrendet (Vagy 3 4) egy egyszerű alkalmazás létrehozása (vala + gtk 3-val).

Az alkalmazás egy egyszerű feleletválasztós kérdés- és válaszjátékból áll (Trivia típus), amelyben 3 kérdésre való válaszadás tévesen ér véget (a játék vége), és a cél az, hogy minél több kérdésre válaszoljon, minden egyes kérdésre korlátozott idő a válaszadásra.

Tervezés

Alkalmazásunk fő kialakítása a következő lesz:

app

Később teszünk néhány gombot, amelyek lehetőséget adnak 50% -ra (két rossz válasz kiküszöbölése), lefagyasztjuk az időt, átadunk egy kérdést. Mindegyik csak egyszer használható, egyszer pedig letiltva.

Tervezés a Kód
Amint a tervben láthatjuk, láthatjuk a használni kívánt gtk elemeket:

Válaszok -> Gomb.

Kérdés -> Címke.

Idő -> Haladássáv.

Helytelen / helyes pontok és kérdések -> Címke.

Láthatjuk, hogy vertikális struktúránk van, ezért függőlegesen használhatjuk a GBox-ot.

Kód

int main (string [] args) {Gtk.init (ref args); var ablak = 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); // függőleges mező var box = új Gtk.Box (Gtk.Orientation.VERTICAL, 0); box.set_spacing (10); // A kérdés kérdése címke var question = new Gtk.Label ("Kérdés?"); // időprogram sáv var time_bar = new Gtk.ProgressBar (); timebar.set_text ("Idő"); time_bar.set_show_text (true); // Válasz gombok var response1 = new Gtk.Button.with_label ("1. válasz"); var resposta2 = new Gtk.Button.with_label ("Válasz 2"); var resposta3 = új Gtk.Button.with_label ("3. válasz"); var resposta4 = új Gtk.Button.with_label ("4. válasz"); // címkézi az információkat var points = new Gtk.Label ("Pontok: 0"); box.pack_start (kérdés); box.pack_start (time_bar); box.pack_start (válasz1); box.pack_start (resposta2); box.pack_start (resposta3); box.pack_start (resposta4); box.pack_start (pontok); ablak.add (doboz); window.show_all (); Gtk.main (); visszatér 0;}

Rögzítés 2013-11-02 21:44:14

Az "idő" mozgatásához a GLib.Timeout-ot használjuk, ahol minden 500 ezredmásodpercben aktiválódik (ez egy hurok, ahol a sávunk értékét tartalmazó változó megnő)

GLib.Timeout.add (500, () => {// Az aktuális előrehaladás lekérése: // (0.0 -> 0%; 1.0 -> 100%) double progress = time_bar.get_fraction (); // Frissítse a sávot: progress = progress + 0.01; time_bar.set_fraction (progress); // Ismételje meg, amíg a 100% -os visszatérési folyamat <1.0;});

Érdekes kapcsolatok 
http://www.valadoc.org/#!wiki=index (az összes gtk elem megtalálható a módszereikkel ...)


Hagyja megjegyzését

E-mail címed nem kerül nyilvánosságra. Kötelező mezők vannak jelölve *

*

*

  1. Az adatokért felelős: Miguel Ángel Gatón
  2. Az adatok célja: A SPAM ellenőrzése, a megjegyzések kezelése.
  3. Legitimáció: Az Ön beleegyezése
  4. Az adatok közlése: Az adatokat csak jogi kötelezettség alapján továbbítjuk harmadik felekkel.
  5. Adattárolás: Az Occentus Networks (EU) által üzemeltetett adatbázis
  6. Jogok: Bármikor korlátozhatja, helyreállíthatja és törölheti adatait.

  1.   lozanotux dijo

    Nagyon jó, hadd kérdezzem meg, hogyan készíthetek egyfajta TAB-okat, de függőlegesen, bár ezeknek nem feltétlenül fülnek kell lenniük, lehetnek gombok vagy ToggleButtons, de nekem egy lap viselkedésére van szükségem, hogy az 1 megérintésekor a tartalma látható legyen és A másik fül le van tiltva, nem tudom, elmagyarázom-e magam, hagyok egy képet, hátha tudsz adni nekem információkat a kivizsgáláshoz. Köszönöm!

    KÉP: http://i.imm.io/1jURw.png

    1.    lolbimbo dijo

      Az "elrendezés" vagy a szövegváltozás (például)?

  2.   92 dijo

    Katalán parla

  3.   döbbenten dijo

    Ez nagyon jó, valójában valami hasonló ahhoz, amit kerestem, kérdés, hogy ez a kérdés valamilyen módon összekapcsolható-e a terminállal?
    Például: Először időt szánok a válaszra, korlátlanul hagyom, és ezt szeretném csinálni.

    Milyen asztali környezetet szeretne telepíteni?
    KDE
    Gnome 3
    Fahéj
    Egység

    Ezek mindegyike kapcsolódott a terminál megfelelő telepítési parancsához, sudo apt-get install ubuntu-desktop

    1.    lolbimbo dijo

      Igen, csak meg kell írnia a Process.spawn_command_line_async ("apt-get install ubuntu-desktop" parancsot);

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

  4.   Saúl Uribe dijo

    Kiváló, tetszik a hozzászólás, gyakorolni fogok (és látom, hogy előbbre jutok), üdvözleteket