Után első bejegyzés Olvastam egy megjegyzést, hogy jobb lenne valami komplexebbel kezdeni, mint egy "hello world" -vel, majd elkészítek egy sorrendet (Vagy 3 4) egy egyszerű alkalmazás létrehozása (vala + gtk 3-val).
Az alkalmazás egy egyszerű feleletválasztós kérdés- és válaszjátékból áll (Trivia típus), amelyben 3 kérdésre való válaszadás tévesen ér véget (a játék vége), és a cél az, hogy minél több kérdésre válaszoljon, minden egyes kérdésre korlátozott idő a válaszadásra.
Tervezés
Alkalmazásunk fő kialakítása a következő lesz:
Később teszünk néhány gombot, amelyek lehetőséget adnak 50% -ra (két rossz válasz kiküszöbölése), lefagyasztjuk az időt, átadunk egy kérdést. Mindegyik csak egyszer használható, egyszer pedig letiltva.
Tervezés a Kód
Amint a tervben láthatjuk, láthatjuk a használni kívánt gtk elemeket:
Válaszok -> Gomb.
Kérdés -> Címke.
Idő -> Haladássáv.
Helytelen / helyes pontok és kérdések -> Címke.
Láthatjuk, hogy vertikális struktúránk van, ezért függőlegesen használhatjuk a GBox-ot.
Kód
int main (string [] args) {Gtk.init (ref args); var ablak = new 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); // függőleges mező var box = új Gtk.Box (Gtk.Orientation.VERTICAL, 0); box.set_spacing (10); // A kérdés kérdése címke var question = new Gtk.Label ("Kérdés?"); // időprogram sáv var time_bar = new Gtk.ProgressBar (); timebar.set_text ("Idő"); time_bar.set_show_text (true); // Válasz gombok var response1 = new Gtk.Button.with_label ("1. válasz"); var resposta2 = new Gtk.Button.with_label ("Válasz 2"); var resposta3 = új Gtk.Button.with_label ("3. válasz"); var resposta4 = új Gtk.Button.with_label ("4. válasz"); // címkézi az információkat var points = new Gtk.Label ("Pontok: 0"); box.pack_start (kérdés); box.pack_start (time_bar); box.pack_start (válasz1); box.pack_start (resposta2); box.pack_start (resposta3); box.pack_start (resposta4); box.pack_start (pontok); ablak.add (doboz); window.show_all (); Gtk.main (); visszatér 0;}
Az "idő" mozgatásához a GLib.Timeout-ot használjuk, ahol minden 500 ezredmásodpercben aktiválódik (ez egy hurok, ahol a sávunk értékét tartalmazó változó megnő)
GLib.Timeout.add (500, () => {// Az aktuális előrehaladás lekérése: // (0.0 -> 0%; 1.0 -> 100%) double progress = time_bar.get_fraction (); // Frissítse a sávot: progress = progress + 0.01; time_bar.set_fraction (progress); // Ismételje meg, amíg a 100% -os visszatérési folyamat <1.0;});
Érdekes kapcsolatok
http://www.valadoc.org/#!wiki=index (az összes gtk elem megtalálható a módszereikkel ...)
Nagyon jó, hadd kérdezzem meg, hogyan készíthetek egyfajta TAB-okat, de függőlegesen, bár ezeknek nem feltétlenül fülnek kell lenniük, lehetnek gombok vagy ToggleButtons, de nekem egy lap viselkedésére van szükségem, hogy az 1 megérintésekor a tartalma látható legyen és A másik fül le van tiltva, nem tudom, elmagyarázom-e magam, hagyok egy képet, hátha tudsz adni nekem információkat a kivizsgáláshoz. Köszönöm!
KÉP: http://i.imm.io/1jURw.png
Az "elrendezés" vagy a szövegváltozás (például)?
Katalán parla
Ez nagyon jó, valójában valami hasonló ahhoz, amit kerestem, kérdés, hogy ez a kérdés valamilyen módon összekapcsolható-e a terminállal?
Például: Először időt szánok a válaszra, korlátlanul hagyom, és ezt szeretném csinálni.
Milyen asztali környezetet szeretne telepíteni?
KDE
Gnome 3
Fahéj
Egység
Ezek mindegyike kapcsolódott a terminál megfelelő telepítési parancsához, sudo apt-get install ubuntu-desktop
Igen, csak meg kell írnia a Process.spawn_command_line_async ("apt-get install ubuntu-desktop" parancsot);
http://valadoc.org/#!api=glib-2.0/GLib.Process.spawn_command_line_sync
Kiváló, tetszik a hozzászólás, gyakorolni fogok (és látom, hogy előbbre jutok), üdvözleteket