Po tem prva objava Prebrala sem komentar, da bi bilo bolje začeti z nečim bolj zapletenim kot "živ svet", potem bom naredila zaporedje (Ali 3 4) objava ustvarjanja preproste aplikacije (z vala + gtk 3).
Aplikacija bo sestavljena iz preproste igre z več vprašanji in odgovori (vrsta Trivia), v kateri se na 3 vprašanja odgovori napačno (igra je končana), cilj pa je odgovoriti na čim več vprašanj, za vsako vprašanje pa imate omejen čas odgovor.
Oblikovanje
Glavna zasnova naše aplikacije bo:
Kasneje bomo postavili nekaj gumbov, ki nam bodo dali možnost 50% (odprava dveh napačnih odgovorov), zamrznili čas in podali vprašanje. Vse jih je mogoče uporabiti samo enkrat, pri uporabi pa so onemogočene.
Oblikovanje a Koda
Kot lahko vidimo pri oblikovanju, vidimo elemente gtk, ki jih bomo uporabili:
Odgovori -> Gumb.
Vprašanje -> Oznaka.
Čas -> ProgressBar.
Napačne / pravilne točke in vprašanja -> Oznaka.
Vidimo, da imamo navpično strukturo, zato lahko GBox uporabljamo navpično.
Koda
int main (string [] args) {Gtk.init (ref args); var okno = novo Gtk.Window (); window.title = "app"; window.window_position = Gtk.WindowPosition.CENTER; window.set_default_size (300, 340); window.destroy.connect (Gtk.main_quit); window.set_border_width (10); // navpično polje var box = novo Gtk.Box (Gtk.Orientation.VERTICAL, 0); box.set_spacing (10); // Oznaka za vprašanje var question = new Gtk.Label ("Vprašanje?"); // programska časovna vrstica var time_bar = new Gtk.ProgressBar (); time_bar.set_text ("Čas"); time_bar.set_show_text (true); // gumbi za odgovor var response1 = new Gtk.Button.with_label ("Response 1"); var resposta2 = novo Gtk.Button.with_label ("Odgovori 2"); var resposta3 = novo Gtk.Button.with_label ("Odgovori 3"); var resposta4 = novo Gtk.Button.with_label ("Odgovori 4"); // označuje info var points = new Gtk.Label ("Točke: 0"); box.pack_start (vprašanje); box.pack_start (time_bar); box.pack_start (odgovor1); box.pack_start (resposta2); box.pack_start (resposta3); box.pack_start (resposta4); box.pack_start (točke); window.add (polje); window.show_all (); Gtk.main (); vrni 0;}
Za premik "časa" uporabimo GLib.Timeout, kjer se bo vsakih 500 milisekund aktiviral (to je zanka, kjer se bo spremenljivka, ki vsebuje vrednost naše vrstice, povečala)
GLib.Timeout.add (500, () => {// Pridobite trenutni napredek: // (0.0 -> 0%; 1.0 -> 100%) double progress = time_bar.get_fraction (); // Posodobite vrstico: napredek = napredek + 0.01; time_bar.set_fraction (napredek); // ponavljamo do 100% vrnitve napredovanja <1.0;});
Zanimive povezave
http://www.valadoc.org/#!wiki=index (vse elemente gtk lahko najdete z njihovimi metodami ...)
Zelo dobro, vprašal vas bom, kako lahko naredim nekakšne zavihke, toda navpično, čeprav ni nujno, da so to zavihki, lahko so to gumbi ali gumbi ToggleButtons, vendar potrebujem vedenje zavihka, ki pri dotiku 1 njegove vsebine je viden in drugi zavihek je onemogočen, ne vem, če se razložim, pustim sliko, da vidim, če mi lahko daš nekaj informacij za preiskavo. Hvala vam!
SLIKA: http://i.imm.io/1jURw.png
«Postavitev» ali sprememba besedila (na primer)?
Katalonski parla
To je zelo dobro, pravzaprav gre za nekaj podobnega tistemu, kar sem iskal, vprašanje, ali bi bilo to vprašanje mogoče na kakršen koli način povezati s terminalom?
Na primer: Za začetek si vzamem čas za odgovor, pustim ga neomejenega in to bi bilo tisto, kar bi rad počel.
Katero namizno okolje želite namestiti?
KDE
Gnome 3
Cimet
Unity
In vsaka od teh, ki je bila povezana s svojim namestitvenim ukazom v terminalu, sudo apt-get install ubuntu-desktop
Da, preprosto bi morali napisati Process.spawn_command_line_async ("apt-get install ubuntu-desktop");
http://valadoc.org/#!api=glib-2.0/GLib.Process.spawn_command_line_sync
Odlično, objava mi je všeč, vadila bom (in se je veselim), lep pozdrav