na de eerste bericht Ik las een opmerking dat het beter zou zijn om te beginnen met iets complexers dan een "hallo wereld", dus ik zal een reeks doen (O 3 4) van na het maken van een eenvoudige applicatie (met vala + gtk 3).
De applicatie zal bestaan uit een eenvoudig vraag-en-antwoordspel van het testtype (type Triviados), waarbij het eindigen als je drie vragen verkeerd beantwoordt (game over), en het doel is om voor elke vraag die je hebt zoveel mogelijk vragen te beantwoorden. een beperkte tijd om te reageren.
ontwerp
Het hoofdontwerp van onze applicatie zal zijn:
Later zullen we een aantal knoppen plaatsen die ons de optie geven van 50% (waarbij twee foute antwoorden worden geëlimineerd), de tijd bevriezen, een vraag doorgeven. Ze kunnen allemaal maar één keer worden gebruikt en worden uitgeschakeld zodra ze zijn gebruikt.
Ontwerp een Code
Zoals we in het ontwerp kunnen zien, kunnen we de gtk-elementen zien die we zullen gebruiken:
Antwoorden -> Knop.
Vraag -> Label.
Tijd -> ProgressBar.
Verkeerde / juiste punten en vragen -> Label.
We kunnen zien dat we een verticale structuur hebben en daarom kunnen we GBox verticaal gebruiken.
Code
int main (string [] args) {Gtk.init (ref args); var window = nieuwe 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); // verticale box var box = nieuwe Gtk.Box (Gtk.Orientation.VERTICAL, 0); box.set_spacing (10); // Label voor de vraag var vraag = nieuw Gtk.Label ("Vraag?"); // prograsive time bar var time_bar = nieuwe Gtk.ProgressBar (); time_bar.set_text ("Tijd"); time_bar.set_show_text (true); // Reactieknoppen var response1 = new Gtk.Button.with_label ("Response 1"); var resposta2 = nieuwe Gtk.Button.with_label ("Antwoord 2"); var resposta3 = nieuwe Gtk.Button.with_label ("Antwoord 3"); var resposta4 = nieuwe Gtk.Button.with_label ("Antwoord 4"); // labels info var points = new Gtk.Label ("Points: 0"); box.pack_start (vraag); box.pack_start (time_bar); box.pack_start (antwoord1); box.pack_start (resposta2); box.pack_start (resposta3); box.pack_start (resposta4); box.pack_start (punten); window.add (vak); window.show_all (); Gtk.main (); retourneer 0;}
Om de "tijd" te verplaatsen gebruiken we GLib.Timeout waarbij deze elke 500 milliseconden wordt geactiveerd (het is een lus waarin de variabele die de waarde van onze balk bevat, wordt verhoogd)
GLib.Timeout.add (500, () => {// Haal de huidige voortgang op: // (0.0 -> 0%; 1.0 -> 100%) dubbele voortgang = time_bar.get_fraction (); // Update de balk: voortgang = voortgang + 0.01; time_bar.set_fraction (voortgang); // Herhaal totdat 100% de voortgang < 1.0 retourneert; });
Interessante links
http://www.valadoc.org/#!wiki=index (je kunt alle gtk-elementen vinden met hun methoden…)
Heel goed, ik zal je vragen hoe ik een soort TABS kan maken, maar verticaal, hoewel het niet per se tabs hoeven te zijn, het kunnen knoppen of ToggleButtons zijn, maar ik heb het gedrag van een tab nodig, dat bij het aanraken van 1 de inhoud ervan en het andere tabblad is uitgeschakeld, ik weet niet of ik het mezelf uitleg, ik laat een afbeelding achter om te zien of je me wat informatie kunt geven om te onderzoeken. Dank je!
BEELD: http://i.imm.io/1jURw.png
De "layout" of de tekst veranderen (bijvoorbeeld)?
Catalaans parla
Dit is heel goed, sterker nog, het is iets dat lijkt op wat ik zocht, een vraag: kan deze vraag op de een of andere manier aan de terminal worden gekoppeld?
Bijvoorbeeld: om te beginnen verwijder ik de tijd om te antwoorden, ik laat deze onbeperkt en dat zou ik graag willen doen.
Welke desktopomgeving wil je installeren?
KDE
Gnome 3
Kaneel
Eenheid
En elk van deze was gekoppeld aan het respectievelijke installatiecommando in de terminal, sudo apt-get install ubuntu-desktop
Ja, u hoeft alleen maar Process.spawn_command_line_async te schrijven ("apt-get install ubuntu-desktop");
http://valadoc.org/#!api=glib-2.0/GLib.Process.spawn_command_line_sync
Uitstekend, ik vond de post leuk, ik ga oefenen (en ik hoop voorop te lopen), groeten