Na die eerste pos Ek het 'n opmerking gelees dat dit beter sou wees om te begin met iets ingewikkelder as 'n 'hallo wêreld', dan maak ek 'n reeks (Of 3 4) plaas 'n eenvoudige toepassing (met vala + gtk 3).
Die toepassing bestaan uit 'n eenvoudige meerkeusevrae-en-antwoord-speletjie (Trivia-tipe), waarin die beantwoording van 3 vrae verkeerdelik eindig (game over), en die doel is om soveel moontlik vrae te beantwoord, vir elke vraag wat u het beperkte tyd om te antwoord.
Design
Die belangrikste ontwerp van ons aansoek is:
Later sal ons 'n paar knoppies sit wat ons die opsie gee om 50% (twee verkeerde antwoorde uit te skakel), tyd te vries, 'n vraag deur te gee. Almal kan slegs een keer gebruik word, terwyl dit een keer gebruik word.
Ontwerp a Kode
Soos ons in die ontwerp kan sien, kan ons die gtk-elemente sien wat ons sal gebruik:
Antwoorde -> Knoppie.
Vraag -> Etiket.
Tyd -> ProgressBar.
Verkeerde / korrekte punte en vrae -> Benoem.
Ons kan sien dat ons 'n vertikale struktuur het, daarom kan ons GBox vertikaal gebruik.
Kode
int main (string [] args) {Gtk.init (ref args); var venster = nuwe Gtk.Window (); window.title = "app"; window.window_position = Gtk.WindowPosition.CENTRE; 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); // Etiket vir die vraag var vraag = nuwe Gtk.Label ("Vraag?"); // tydprogrambalk var time_bar = nuwe Gtk.ProgressBar (); time_bar.set_text ("Tyd"); time_bar.set_show_text (waar); // Antwoordknoppies var respons1 = nuwe Gtk.Button.with_label ("Antwoord 1"); var resposta2 = nuwe Gtk.Button.with_label ("Antwoord 2"); var resposta3 = nuwe Gtk.Button.with_label ("Antwoord 3"); var resposta4 = nuwe Gtk.Button.with_label ("Antwoord 4"); // etikette info var punte = nuwe Gtk.Label ("Punte: 0"); box.pack_start (vraag); box.pack_start (tydbalk); box.pack_start (antwoord1); box.pack_start (resposta2); box.pack_start (resposta3); box.pack_start (resposta4); box.pack_start (punte); window.add (boks); window.show_all (); Gtk.main (); terugkeer 0;}
Om die "tyd" te skuif, gebruik ons GLib.Timeout waar elke 500 millisekonde dit geaktiveer sal word (dit is 'n lus waar die veranderlike wat die waarde van ons maat bevat, sal toeneem)
GLib.Timeout.add (500, () => {// Kry die huidige vordering: // (0.0 -> 0%; 1.0 -> 100%) dubbele vordering = time_bar.get_fraction (); // Werk die balk op: progress = progress + 0.01; time_bar.set_fraction (progress); // Herhaal tot 100% return progress <1.0;});
Skakels van belang
http://www.valadoc.org/#!wiki=index (u kan alle gtk-elemente met hul metodes vind ...)
6 kommentaar, los joune
Baie goed, laat ek u vra hoe ek 'n soort TABS kan maak, maar vertikaal, alhoewel dit nie noodwendig tabs hoef te wees nie, dit kan knoppies of ToggleButtons wees, maar ek het die gedrag van 'n tab nodig dat die inhoud daarvan gesien kan word as u 1 raak, die ander oortjie is uitgeskakel, ek weet nie of ek myself verduidelik nie, ek laat 'n prentjie om te sien of u my inligting kan gee om te ondersoek. Dankie!
BEELD: http://i.imm.io/1jURw.png
Die "uitleg" of die teksverandering (byvoorbeeld)?
Katalaanse parla
Dit is baie goed, dit is iets soortgelyk aan wat ek gesoek het, 'n vraag, kan hierdie vraag op enige manier aan die terminale gekoppel word?
Byvoorbeeld: om te begin neem ek die tyd om te antwoord, ek laat dit onbeperk, en dit is wat ek wil doen.
Watter lessenaaromgewing wil u installeer?
KDE
Gnome 3
Kaneel
Unity
En elkeen hiervan wat gekoppel is aan sy onderskeie installasie-opdrag in die terminale, sudo apt-get install ubuntu-desktop
Ja, u hoef net Process.spawn_command_line_async ("apt-get install ubuntu-desktop") te skryf;
http://valadoc.org/#!api=glib-2.0/GLib.Process.spawn_command_line_sync
Uitstekend, ek hou van die boodskap, ek sal oefen (en ek sien om vooruit te gaan), groete