Erstellen einer Vala + Gtk3-App. [1. Teil]

Nach Erster Beitrag Ich habe einen Kommentar gelesen, dass es besser wäre, mit etwas Komplexerem als einer "Hallo Welt" zu beginnen, dann werde ich eine Sequenz machen (3 oder 4) post erstelle eine einfache anwendung (mit vala + gtk 3).

Die Anwendung besteht aus einem einfachen Multiple-Choice-Frage- und Antwortspiel (Trivia-Typ), bei dem die Beantwortung von 3 Fragen falsch endet (Spielende). Ziel ist es, für jede Frage, die Sie haben, so viele Fragen wie möglich zu beantworten begrenzte Zeit, um zu antworten.

Design

Hauptdesign unserer Anwendung wird sein:

App

Später werden wir einige Schaltflächen einfügen, die uns die Option geben, 50% (zwei falsche Antworten werden eliminiert), die Zeit einzufrieren und eine Frage zu übergeben. Alle können nur einmal verwendet werden, wenn sie einmal verwendet werden.

Design a Code
Wie wir im Design sehen können, können wir die GTK-Elemente sehen, die wir verwenden werden:

Antworten -> Schaltfläche.

Frage -> Etikett.

Zeit -> Fortschrittsanzeige.

Falsche / korrekte Punkte und Fragen -> Beschriftung.

Wir können sehen, dass wir eine vertikale Struktur haben, daher können wir GBox vertikal verwenden.

Code

int main (string [] args) {Gtk.init (ref args); var window = 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); // vertikale Box var box = neue Gtk.Box (Gtk.Orientation.VERTICAL, 0); box.set_spacing (10); // Label für die Frage var question = new Gtk.Label ("Question?"); // progressive Zeitleiste var time_bar = new Gtk.ProgressBar (); timebar.set_text ("Time"); time_bar.set_show_text (true); // Antwortschaltflächen var response1 = new Gtk.Button.with_label ("Antwort 1"); var resposta2 = new Gtk.Button.with_label ("Antwort 2"); var resposta3 = new Gtk.Button.with_label ("Antwort 3"); var resposta4 = new Gtk.Button.with_label ("Antwort 4"); // beschriftet info var points = new Gtk.Label ("Punkte: 0"); box.pack_start (Frage); box.pack_start (time_bar); box.pack_start (reply1); box.pack_start (resposta2); box.pack_start (resposta3); box.pack_start (resposta4); box.pack_start (Punkte); window.add (box); window.show_all (); Gtk.main (); return 0;}

Aufnahme vom 2013-11-02 21:44:14

Um die "Zeit" zu verschieben, verwenden wir GLib.Timeout, wo es alle 500 Millisekunden aktiviert wird (es ist eine Schleife, in der die Variable, die den Wert unseres Balkens enthält, zunimmt).

GLib.Timeout.add (500, () => {// Aktuellen Fortschritt abrufen: // (0.0 -> 0%; 1.0 -> 100%) double progress = time_bar.get_fraction (); // Aktualisiere den Balken: progress = progress + 0.01; time_bar.set_fraction (progress); // Wiederholen, bis 100% return progress <1.0;});

Links von Interesse 
http://www.valadoc.org/#!wiki=index (Sie können alle GTK-Elemente mit ihren Methoden finden ...)


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: Miguel Ángel Gatón
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.

  1.   lozanotux sagte

    Sehr gut, lassen Sie mich fragen, wie ich eine Art TABS erstellen kann, aber vertikal, obwohl es sich nicht unbedingt um Tabs handeln muss, können es Schaltflächen oder ToggleButtons sein, aber ich brauche das Verhalten eines Tabs, das beim Berühren von 1 dessen Inhalt sichtbar und sichtbar ist Die andere Registerkarte ist deaktiviert. Ich weiß nicht, ob ich mich selbst erkläre. Ich hinterlasse ein Bild, um zu sehen, ob Sie mir Informationen zur Untersuchung geben können. Vielen Dank!

    BILD: http://i.imm.io/1jURw.png

    1.    Lolbimbo sagte

      Das "Layout" oder die Textänderung (zum Beispiel)?

  2.   pandev92 sagte

    Katalanische Parla

  3.   betäubt sagte

    Das ist sehr gut, in der Tat ist es etwas Ähnliches wie das, wonach ich gesucht habe, eine Frage, könnte diese Frage in irgendeiner Weise mit dem Terminal verknüpft werden?
    Zum Beispiel: Zu Beginn nehme ich mir die Zeit, um zu antworten. Ich lasse es unbegrenzt und das würde ich gerne tun.

    Welche Desktop-Umgebung möchten Sie installieren?
    KDE
    Gnome 3
    Zimt
    Einheit

    Und jeder von diesen, der mit seinem jeweiligen Installationsbefehl im Terminal verknüpft war, sudo apt-get install ubuntu-desktop

    1.    Lolbimbo sagte

      Ja, Sie müssten nur Process.spawn_command_line_async schreiben ("apt-get install ubuntu-desktop").

      http://valadoc.org/#!api=glib-2.0/GLib.Process.spawn_command_line_sync

  4.   Saulus Uribe sagte

    Ausgezeichnet, ich mag die Post, ich werde üben (und ich sehe weiter), Grüße