Po pirmasis įrašas Skaičiau komentarą, kad geriau būtų pradėti nuo kažko sudėtingesnio nei „labas pasaulis“, tada padarysiu seką (Arba 3 4) paprastos programos sukūrimas (su vala + gtk 3).
Programą sudarys paprastas klausimų ir atsakymų žaidimas su įvairiais pasirinkimais (smulkmenos tipas), kuriame atsakymas į 3 klausimus baigsis neteisingai (žaidimas baigtas), ir tikslas yra atsakyti į kuo daugiau klausimų, už kiekvieną klausimą turite ribotą laiką. Atsakyti.
Dizainas
Pagrindinis mūsų programos dizainas bus:
Vėliau mes įdėsime keletą mygtukų, kurie suteiks mums galimybę pasirinkti 50% (pašalinti du neteisingus atsakymus), užšaldyti laiką, perduoti klausimą. Visi jie gali būti naudojami tik vieną kartą, o išjungus - vieną kartą.
Dizainas a Kodas
Kaip matome dizaine, galime pamatyti gtk elementus, kuriuos naudosime:
Atsakymai -> mygtukas.
Klausimas -> Etiketė.
Laikas -> „ProgressBar“.
Neteisingi / teisingi punktai ir klausimai -> Etiketė.
Matome, kad turime vertikalią struktūrą, todėl galime naudoti „GBox“ vertikaliai.
Kodas
int main (string [] args) {Gtk.init (ref args); var langas = new Gtk.Window (); window.title = "programa"; window.window_position = Gtk.WindowPosition.CENTER; window.set_default_size (300, 340); window.destroy.connect (Gtk.main_quit); window.set_border_width (10); // vertikali dėžutė var box = new Gtk.Box (Gtk.Orientation.VERTICAL, 0); box.set_spacing (10); // Etiketė klausimui var question = new Gtk.Label ("Klausimas?"); // laiko programos juosta var time_bar = new Gtk.ProgressBar (); timebar.set_text („Laikas“); time_bar.set_show_text (true); // Atsakymo mygtukai var response1 = new Gtk.Button.with_label ("1 atsakymas"); var resposta2 = naujas Gtk.Button.with_label ("Atsakyti 2"); var resposta3 = naujas Gtk.Button.with_label ("Atsakyti 3"); var resposta4 = naujas Gtk.Button.with_label ("Atsakyti 4"); // žymi info var points = new Gtk.Label ("Taškai: 0"); box.pack_start (klausimas); box.pack_start (laiko juosta); box.pack_start (atsakymas1); box.pack_start (resposta2); box.pack_start (resposta3); box.pack_start (resposta4); box.pack_start (taškai); window.add (langelis); window.show_all (); Gtk.main (); grąžinti 0;}
Norėdami perkelti „laiką“, naudojame GLib.Timeout, kur jis bus suaktyvintas kas 500 milisekundžių (tai yra ciklas, kuriame padidės kintamasis, kuriame yra mūsų juostos vertė).
GLib.Timeout.add (500, () => {// Gauti dabartinę pažangą: // (0.0 -> 0%; 1.0 -> 100%) dvigubas progresas = time_bar.get_fraction (); // Atnaujinkite juostą: progresas = progresas + 0.01; laiko juosta.nustatyti_frakcija (progresas); // kartoti tol, kol 100 proc. grįžimo pažanga <1.0;});
Įdomios nuorodos
http://www.valadoc.org/#!wiki=index (galite rasti visus gtk elementus su jų metodais ...)
Labai gerai, aš paklausiu jūsų, kaip aš galiu sukurti tam tikrus skirtukus, bet vertikaliai, nors jie nebūtinai turi būti skirtukai, jie gali būti mygtukai arba „ToggleButtons“, bet man reikia skirtuko elgesio, kad paliesdamas 1 jo turinį yra matomas ir kitas skirtukas yra išjungtas, aš nežinau, ar aš paaiškinsiu save, aš palieku vaizdą, kad pamatytumėte, ar galite pateikti informacijos, kurią galėčiau ištirti. Ačiū!
VAIZDAS: http://i.imm.io/1jURw.png
„Maketas“ ar teksto pakeitimas (pavyzdžiui)?
Katalonų parla
Tai labai gerai, iš tikrųjų tai yra kažkas panašaus į tai, ko ieškojau, klausimas, ar šį klausimą galima kaip nors susieti su terminalu?
Pvz .: Norėdami pradėti, aš skiriu laiko atsakymui, palieku neribotą laiką ir tai norėčiau padaryti.
Kokią darbalaukio aplinką norite įdiegti?
KDE
Gnomas 3
Cinamonas
Vienybė
Kiekvienas iš jų buvo susietas su atitinkama diegimo komanda terminale, sudo apt-get install ubuntu-desktop
Taip, tereikės parašyti Process.spawn_command_line_async ("apt-get install ubuntu-desktop");
http://valadoc.org/#!api=glib-2.0/GLib.Process.spawn_command_line_sync
Puiku, man patinka įrašas, būsiu praktikuojantis (ir matau, kad pasieksiu priekį), sveikinimus