Vala + Gtk3 -sovelluksen luominen. [1. osa]

jälkeen ensimmäinen viesti Luin kommentin, että olisi parempi aloittaa jollakin monimutkaisemmalla kuin "hei maailma", sitten teen sarjan (Tai 3 4) luomalla yksinkertaisen sovelluksen (vala + gtk 3).

Sovellus koostuu yksinkertaisesta monivalintakysymys- ja vastauspelistä (Trivia-tyyppi), jossa vastaaminen 3 kysymykseen väärin päättyy (peli on ohi) ja tavoitteena on vastata mahdollisimman moniin kysymyksiin jokaiselle kysymykselle, johon sinulla on rajoitettu aika Vastaa.

Suunnittelu

Sovelluksemme pääsuunnittelu on:

sovelluksen

Myöhemmin laitamme joitain painikkeita, jotka antavat meille vaihtoehdon 50% (eliminoimalla kaksi väärää vastausta), jäädyttää aikaa, välittää kysymyksen. Kaikkia niitä voidaan käyttää vain kerran, ne poistetaan käytöstä kerran.

Suunnittelu a Koodi
Kuten voimme nähdä suunnittelussa, voimme nähdä gtk-elementit, joita käytämme:

Vastaukset -> painike.

Kysymys -> Tarra.

Aika -> etenemispalkki.

Väärät / oikeat kohdat ja kysymykset -> Tunniste.

Voimme nähdä, että meillä on pystysuuntainen rakenne, joten voimme käyttää GBoxia pystysuunnassa.

Koodi

int main (merkkijono [] args) {Gtk.init (viite args); var ikkuna = uusi Gtk.Window (); window.title = "sovellus"; window.window_position = Gtk.WindowPosition.CENTER; window.set_default_size (300, 340); window.destroy.connect (Gtk.main_quit); window.set_border_width (10); // pystysuora laatikko var box = uusi Gtk.Box (Gtk.Orientation.VERTICAL, 0); box.set_spacing (10); // Tunniste kysymykselle var question = new Gtk.Label ("Kysymys?"); // progressiivinen aikarivi var time_bar = uusi Gtk.ProgressBar (); time_bar.set_text ("Aika"); time_bar.set_show_text (tosi); // Vastepainikkeet var response1 = uusi Gtk.Button.with_label ("Vastaus 1"); var resposta2 = uusi Gtk.Button.with_label ("Vastaus 2"); var resposta3 = uusi Gtk.Button.with_label ("Vastaus 3"); var resposta4 = uusi Gtk.Button.with_label ("Vastaus 4"); // tunnistaa tiedot var points = new Gtk.Label ("Pisteet: 0"); box.pack_start (kysymys); box.pack_start (aikapalkki); box.pack_start (vastaus1); box.pack_start (resposta2); box.pack_start (resposta3); box.pack_start (resposta4); box.pack_start (pistettä); window.add (laatikko); window.show_all (); Gtk.main (); paluu 0;}

Sieppaa 2013-11-02 21:44:14

"Ajan" siirtämiseen käytämme GLib.Timeout-toimintoa, jossa se aktivoidaan 500 millisekunnin välein (se on silmukka, jossa palkin arvon sisältävä muuttuja kasvaa)

GLib.Timeout.add (500, () => {// Hae nykyinen edistyminen: // (0.0 -> 0%; 1.0 -> 100%) kaksinkertainen edistys = time_bar.get_fraction (); // Päivitä palkki: edistyminen = edistyminen + 0.01; aika_palkki.joukon murtoluku (edistyminen); // Toista, kunnes 100 prosentin palautusprosessi on <1.0;})

Mielenkiintoiset linkit 
http://www.valadoc.org/#!wiki=index (Löydät kaikki gtk-elementit niiden menetelmillä ...)


Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

*

*

  1. Vastuussa tiedoista: Miguel Ángel Gatón
  2. Tietojen tarkoitus: Roskapostin hallinta, kommenttien hallinta.
  3. Laillistaminen: Suostumuksesi
  4. Tietojen välittäminen: Tietoja ei luovuteta kolmansille osapuolille muutoin kuin lain nojalla.
  5. Tietojen varastointi: Occentus Networks (EU) isännöi tietokantaa
  6. Oikeudet: Voit milloin tahansa rajoittaa, palauttaa ja poistaa tietojasi.

  1.   imeskelytabletti dijo

    Erittäin hyvä, haluan kysyä, kuinka voin tehdä eräänlaisia ​​välilehtiä, mutta pystysuunnassa, vaikka niiden ei välttämättä tarvitse olla välilehtiä, ne voivat olla painikkeita tai ToggleButtons, mutta tarvitsen välilehden käyttäytymistä, joka kosketettaessa 1 sen sisältöä näkyy ja toinen välilehti on poistettu käytöstä, en tiedä selitänkö itselleni, jätän kuvan nähdäksesi, voitko antaa minulle tietoja tutkittavaksi. Kiitos!

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

    1.    lolbimbo dijo

      "Asettelu" tai tekstimuutos (esimerkiksi)?

  2.   92 dijo

    Katalaani parla

  3.   järkyttynyt dijo

    Tämä on todella hyvä, se on jotain samanlaista kuin mitä etsin, kysymys, voisiko tämä kysymys liittyä terminaaliin jollain tavalla?
    Esimerkiksi: Aluksi käytän aikaa vastaamiseen, jätän sen rajoittamattomaksi ja haluaisin tehdä sen.

    Minkä työpöytäympäristön haluat asentaa?
    KDE
    GNOME 3
    Kaneli
    yhtenäisyys

    Ja jokainen näistä linkitettiin vastaavaan asennuskomentoonsa terminaalissa, sudo apt-get install ubuntu-desktop

    1.    lolbimbo dijo

      Kyllä, sinun tarvitsee vain kirjoittaa 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 dijo

    Erinomainen, pidän viestistä, harjoittelen (ja näen pääsevän eteenpäin), tervehdyksiä