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:
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;}
"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ä ...)
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
"Asettelu" tai tekstimuutos (esimerkiksi)?
Katalaani parla
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
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
Erinomainen, pidän viestistä, harjoittelen (ja näen pääsevän eteenpäin), tervehdyksiä