Crearea unei aplicații Vala + Gtk3. [Prima parte]

După ce primul post Am citit un comentariu că ar fi mai bine să începem cu ceva mai complex decât o „lume bună”, apoi voi face o secvență (Sau 3 4) postează crearea unei aplicații simple (cu vala + gtk 3).

Aplicația va consta dintr-un joc simplu de întrebări și răspunsuri cu alegere multiplă (tip Trivia), în care răspunsul la 3 întrebări se termină greșit (joc terminat), iar obiectivul este să răspundeți la cât mai multe întrebări posibil, pentru fiecare întrebare pe care o aveți timp limitat pentru a răspunde.

Desen

Proiectarea principală a aplicației noastre va fi:

aplicaţia

Mai târziu vom pune câteva butoane care ne vor oferi opțiunea de 50% (eliminând două răspunsuri greșite), înghețăm timpul, trecem o întrebare. Toate pot fi utilizate o singură dată, fiind dezactivate odată utilizate.

Proiectați un Cod
După cum putem vedea în proiectare, putem vedea elementele gtk pe care le vom folosi:

Răspunsuri -> Buton.

Întrebare -> Etichetă.

Timp -> ProgressBar.

Puncte greșite / corecte și Întrebări -> Etichetă.

Putem vedea că avem o structură verticală, prin urmare putem folosi GBox pe verticală.

Cod

int main (string [] args) {Gtk.init (ref args); fereastră var = new Gtk.Window (); window.title = "aplicație"; window.window_position = Gtk.WindowPosition.CENTER; 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); // Etichetă pentru întrebarea var întrebare = nouă Gtk.Label („Întrebare?”); // bara program de timp var time_bar = new Gtk.ProgressBar (); timebar.set_text („Ora”); time_bar.set_show_text (adevărat); // Butoane de răspuns var response1 = new Gtk.Button.with_label ("Răspuns 1"); var resposta2 = new Gtk.Button.with_label ("Răspunde 2"); var resposta3 = new Gtk.Button.with_label ("Răspundeți 3"); var resposta4 = new Gtk.Button.with_label ("Răspunde 4"); // etichetează info var points = Gtk.Label nou („Puncte: 0”); box.pack_start (întrebare); box.pack_start (time_bar); box.pack_start (reply1); box.pack_start (răspuns2); box.pack_start (răspuns3); box.pack_start (răspuns4); box.pack_start (puncte); window.add (cutie); window.show_all (); Gtk.main (); returnează 0;}

Captură din 2013-11-02 21:44:14

Pentru a muta „timpul” folosim GLib.Timeout unde la fiecare 500 de milisecunde va fi activat (este o buclă în care variabila care conține valoarea barei noastre va crește)

GLib.Timeout.add (500, () => {// Obțineți progresul curent: // (0.0 -> 0%; 1.0 -> 100%) progres dublu = time_bar.get_fraction (); // Actualizați bara: progres = progres + 0.01; time_bar.set_fraction (progres); // Repetați până când 100% returnează progresul <1.0;});

Link-uri de interes 
http://www.valadoc.org/#!wiki=index (puteți găsi toate elementele gtk cu metodele lor ...)


Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: Miguel Ángel Gatón
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.

  1.   lozanotux el a spus

    Foarte bine, vă voi întreba cum pot face un fel de TABS, dar pe verticală, deși nu trebuie neapărat să fie file, pot fi butoane sau ToggleButtons, dar am nevoie de comportamentul unei file, că atunci când atingeți 1 conținutul său este văzut și Cealaltă filă este dezactivată, nu știu dacă mă explic, las o imagine pentru a vedea dacă îmi puteți da niște informații de investigat. Mulțumesc!

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

    1.    lolbimbo el a spus

      „Aspectul” sau modificarea textului (de exemplu)?

  2.   pandev92 el a spus

    Catalană vorbește

  3.   uimit el a spus

    Acest lucru este foarte bun, de fapt, este ceva similar cu ceea ce căutam, o întrebare, această întrebare ar putea fi legată în vreun fel de terminal?
    De exemplu: Pentru a începe îmi iau timp să răspund, îl las în nelimitat și aș vrea să fac.

    Ce mediu desktop doriți să instalați?
    KDE
    Gnomul 3
    Scorţişoară
    Unitate

    Și fiecare dintre acestea care a fost conectat la comanda de instalare respectivă din terminal, sudo apt-get install ubuntu-desktop

    1.    lolbimbo el a spus

      Da, ar trebui să scrieți Process.spawn_command_line_async ("apt-get install ubuntu-desktop");

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

  4.   Saul Uribe el a spus

    Excelent, îmi place postarea, voi exersa (și văd să merg mai departe), salutări