„Vala + Gtk3“ programos kūrimas. [1 dalis]

Po pirmasis įrašas Skaičiau komentarą, kad geriau būtų pradėti nuo kažko sudėtingesnio nei „labas pasaulis“, tada padarysiu seką (Arba 3 4) paprastos programos sukūrimas (su vala + gtk 3).

Programą sudarys paprastas klausimų ir atsakymų žaidimas su įvairiais pasirinkimais (smulkmenos tipas), kuriame atsakymas į 3 klausimus baigsis neteisingai (žaidimas baigtas), ir tikslas yra atsakyti į kuo daugiau klausimų, už kiekvieną klausimą turite ribotą laiką. Atsakyti.

Dizainas

Pagrindinis mūsų programos dizainas bus:

programa

Vėliau mes įdėsime keletą mygtukų, kurie suteiks mums galimybę pasirinkti 50% (pašalinti du neteisingus atsakymus), užšaldyti laiką, perduoti klausimą. Visi jie gali būti naudojami tik vieną kartą, o išjungus - vieną kartą.

Dizainas a Kodas
Kaip matome dizaine, galime pamatyti gtk elementus, kuriuos naudosime:

Atsakymai -> mygtukas.

Klausimas -> Etiketė.

Laikas -> „ProgressBar“.

Neteisingi / teisingi punktai ir klausimai -> Etiketė.

Matome, kad turime vertikalią struktūrą, todėl galime naudoti „GBox“ vertikaliai.

Kodas

int main (string [] args) {Gtk.init (ref args); var langas = new Gtk.Window (); window.title = "programa"; window.window_position = Gtk.WindowPosition.CENTER; window.set_default_size (300, 340); window.destroy.connect (Gtk.main_quit); window.set_border_width (10); // vertikali dėžutė var box = new Gtk.Box (Gtk.Orientation.VERTICAL, 0); box.set_spacing (10); // Etiketė klausimui var question = new Gtk.Label ("Klausimas?"); // laiko programos juosta var time_bar = new Gtk.ProgressBar (); timebar.set_text („Laikas“); time_bar.set_show_text (true); // Atsakymo mygtukai var response1 = new Gtk.Button.with_label ("1 atsakymas"); var resposta2 = naujas Gtk.Button.with_label ("Atsakyti 2"); var resposta3 = naujas Gtk.Button.with_label ("Atsakyti 3"); var resposta4 = naujas Gtk.Button.with_label ("Atsakyti 4"); // žymi info var points = new Gtk.Label ("Taškai: 0"); box.pack_start (klausimas); box.pack_start (laiko juosta); box.pack_start (atsakymas1); box.pack_start (resposta2); box.pack_start (resposta3); box.pack_start (resposta4); box.pack_start (taškai); window.add (langelis); window.show_all (); Gtk.main (); grąžinti 0;}

Fiksuoti nuo 2013-11-02 21:44:14

Norėdami perkelti „laiką“, naudojame GLib.Timeout, kur jis bus suaktyvintas kas 500 milisekundžių (tai yra ciklas, kuriame padidės kintamasis, kuriame yra mūsų juostos vertė).

GLib.Timeout.add (500, () => {// Gauti dabartinę pažangą: // (0.0 -> 0%; 1.0 -> 100%) dvigubas progresas = time_bar.get_fraction (); // Atnaujinkite juostą: progresas = progresas + 0.01; laiko juosta.nustatyti_frakcija (progresas); // kartoti tol, kol 100 proc. grįžimo pažanga <1.0;});

Įdomios nuorodos 
http://www.valadoc.org/#!wiki=index (galite rasti visus gtk elementus su jų metodais ...)


Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Atsakingas už duomenis: Miguel Ángel Gatón
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.

  1.   lozanotux sakė

    Labai gerai, aš paklausiu jūsų, kaip aš galiu sukurti tam tikrus skirtukus, bet vertikaliai, nors jie nebūtinai turi būti skirtukai, jie gali būti mygtukai arba „ToggleButtons“, bet man reikia skirtuko elgesio, kad paliesdamas 1 jo turinį yra matomas ir kitas skirtukas yra išjungtas, aš nežinau, ar aš paaiškinsiu save, aš palieku vaizdą, kad pamatytumėte, ar galite pateikti informacijos, kurią galėčiau ištirti. Ačiū!

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

    1.    lolbimbo sakė

      „Maketas“ ar teksto pakeitimas (pavyzdžiui)?

  2.   92. kas yra? sakė

    Katalonų parla

  3.   apstulbęs sakė

    Tai labai gerai, iš tikrųjų tai yra kažkas panašaus į tai, ko ieškojau, klausimas, ar šį klausimą galima kaip nors susieti su terminalu?
    Pvz .: Norėdami pradėti, aš skiriu laiko atsakymui, palieku neribotą laiką ir tai norėčiau padaryti.

    Kokią darbalaukio aplinką norite įdiegti?
    KDE
    Gnomas 3
    Cinamonas
    Vienybė

    Kiekvienas iš jų buvo susietas su atitinkama diegimo komanda terminale, sudo apt-get install ubuntu-desktop

    1.    lolbimbo sakė

      Taip, tereikės parašyti Process.spawn_command_line_async ("apt-get install ubuntu-desktop");

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

  4.   Saulius Uribe sakė

    Puiku, man patinka įrašas, būsiu praktikuojantis (ir matau, kad pasieksiu priekį), sveikinimus