Lietotnes Vala + Gtk3 izveide. [1. daļa]

Pēc pirmais ziņojums Es izlasīju komentāru, ka labāk būtu sākt ar kaut ko sarežģītāku nekā "sveika pasaule", tad es izveidošu secību (O 3 4), izveidojot vienkāršu lietojumprogrammu (ar vala + gtk 3).

Pieteikums sastāvēs no vienkāršas atbilžu un atbilžu spēles (nieki), kurā atbildes uz 3 jautājumiem beidzas nepareizi (spēle ir beigusies), un mērķis ir atbildēt uz pēc iespējas vairāk jautājumiem, uz katru jautājumu jums ir ierobežots laiks. Atbildēt.

Dizains

Mūsu pieteikuma galvenais dizains būs:

app

Vēlāk mēs ievietosim dažas pogas, kas mums dos iespēju izvēlēties 50% (izslēdzot divas nepareizas atbildes), iesaldēt laiku, nodot jautājumu. Visus tos var izmantot tikai vienu reizi, vienreiz tos atspējot.

Dizains a Kods
Kā redzam dizainā, mēs varam redzēt gtk elementus, kurus izmantosim:

Atbildes -> Poga.

Jautājums -> etiķete.

Laiks -> ProgressBar.

Nepareizi / pareizi punkti un jautājumi -> etiķete.

Mēs varam redzēt, ka mums ir vertikāla struktūra, tāpēc mēs varam izmantot GBox vertikāli.

Kods

int main (string [] args) {Gtk.init (ref args); var logs = jauns Gtk.Window (); window.title = "lietotne"; window.window_position = Gtk.WindowPosition.CENTER; window.set_default_size (300, 340); window.destroy.connect (Gtk.main_quit); window.set_border_width (10); // vertikālā lodziņa var box = new Gtk.Box (Gtk.Orientation.VERTICAL, 0); box.set_spacing (10); // Iezīme jautājumam var question = new Gtk.Label ("Jautājums?"); // progresīvā laika josla var time_bar = new Gtk.ProgressBar (); timebar.set_text ("Laiks"); time_bar.set_show_text (true); // Atbildes pogas var response1 = new Gtk.Button.with_label ("1. atbilde"); var resposta2 = new Gtk.Button.with_label ("Atbildēt 2"); var resposta3 = new Gtk.Button.with_label ("Atbildēt 3"); var resposta4 = new Gtk.Button.with_label ("Atbildēt 4"); // iezīmē info var points = new Gtk.Label ("Punkti: 0"); box.pack_start (jautājums); box.pack_start (laika josla); box.pack_start (atbilde1); box.pack_start (resposta2); box.pack_start (resposta3); box.pack_start (resposta4); box.pack_start (punkti); window.add (lodziņš); window.show_all (); Gtk.main (); atgriezt 0;}

Uzņemiet no 2013. gada 11. septembra 02:21:44

Lai pārvietotu "laiku", mēs izmantojam GLib.Timeout, kad tas tiks aktivizēts ik pēc 500 milisekundēm (tā ir cilpa, kurā palielināsies mainīgais, kas satur mūsu joslas vērtību)

GLib.Timeout.add (500, () => {// Iegūt pašreizējo progresu: // (0.0 -> 0%; 1.0 -> 100%) dubultā progress = time_bar.get_fraction (); // Atjauniniet joslu: progress = progress + 0.01; time_bar.set_fraction (progress); // atkārtot līdz 100% atgriešanās progress <1.0;});

Interešu saites 
http://www.valadoc.org/#!wiki=index (jūs varat atrast visus gtk elementus ar viņu metodēm ...)


6 komentāri, atstājiet savus

Atstājiet savu komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti ar *

*

*

  1. Atbildīgais par datiem: Migels Ángels Gatóns
  2. Datu mērķis: SPAM kontrole, komentāru pārvaldība.
  3. Legitimācija: jūsu piekrišana
  4. Datu paziņošana: Dati netiks paziņoti trešām personām, izņemot juridiskus pienākumus.
  5. Datu glabāšana: datu bāze, ko mitina Occentus Networks (ES)
  6. Tiesības: jebkurā laikā varat ierobežot, atjaunot un dzēst savu informāciju.

  1.   losīns teica

    Ļoti labi, es jums jautāšu, kā es varu izveidot sava veida cilnes, bet vertikāli, lai gan tām nav obligāti jābūt cilnēm, tās var būt pogas vai ToggleButtons, bet man ir nepieciešama cilnes uzvedība, ka, pieskaroties 1 tās saturam ir redzams un otra cilne ir atspējota, es nezinu, vai es paskaidroju pats, es atstāju attēlu, lai redzētu, vai jūs varat man sniegt kādu informāciju izmeklēšanai. Paldies!

    ATTĒLS: http://i.imm.io/1jURw.png

    1.    lolbimbo teica

      «Izkārtojums» vai teksts mainās (piemēram)?

  2.   92 teica

    Katalāņu parla

  3.   apdullis teica

    Tas ir ļoti labi, patiesībā tas ir kaut kas līdzīgs tam, ko es meklēju, jautājums, vai šo jautājumu varētu kaut kādā veidā saistīt ar termināli?
    Piemēram: Vispirms es atvēlu laiku, lai atbildētu. Es to atstāju neierobežotu, un tas būtu tas, ko es vēlētos darīt.

    Kādu darbvirsmas vidi vēlaties instalēt?
    KDE
    Gnome 3
    Kanēlis
    Vienotība

    Un katrs no tiem, kas bija saistīts ar tā atbilstošo instalēšanas komandu terminālā, sudo apt-get install ubuntu-desktop

    1.    lolbimbo teica

      Jā, jums vienkārši jāuzraksta Process.spawn_command_line_async ("apt-get install ubuntu-desktop");

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

  4.   Sauls Uribe teica

    Izcili, man patīk ziņa, es praktizēšos (un ar nepacietību gaidu), sveicienus