Opprette en Vala + Gtk3-app. [1. del]

Etter første innlegg Jeg leste en kommentar om at det ville være bedre å starte med noe mer komplekst enn en "hei verden", så vil jeg lage en sekvens (O 3 4) innlegg lage en enkel applikasjon (med vala + gtk 3).

Søknaden vil bestå av et enkelt flervalgsspørsmål og svarsspill (Trivia-type), der svar på tre spørsmål slutter feil (spillet er slutt), og målet er å svare på så mange spørsmål som mulig, for hvert spørsmål har du en begrenset tid å svare.

utforming

Hoveddesignet for søknaden vår vil være:

app

Senere vil vi sette noen knapper som gir oss muligheten til 50% (eliminering av to feil svar), fryse tid, passere et spørsmål. Alle kan bare brukes en gang, og deaktiveres en gang brukt.

Design a Kode
Som vi kan se i designet kan vi se gtk-elementene vi skal bruke:

Svar -> Knapp.

Spørsmål -> Merk.

Tid -> ProgressBar.

Feil / riktig poeng og spørsmål -> Merk.

Vi kan se at vi har en vertikal struktur, derfor kan vi bruke GBox vertikalt.

Kode

int main (streng [] args) {Gtk.init (ref args); var vindu = nytt 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); // vertikal boks var boks = ny Gtk.Box (Gtk.Orientation.VERTICAL, 0); box.set_spacing (10); // Merking for spørsmålet var spørsmål = nytt Gtk.Label ("Spørsmål?"); // progressiv tidslinje var time_bar = ny Gtk.ProgressBar (); time_bar.set_text ("Time"); time_bar.set_show_text (true); // Svarsknapper var respons1 = ny Gtk.Button.with_label ("Svar 1"); var resposta2 = ny Gtk.Button.with_label ("Svar 2"); var resposta3 = ny Gtk.Button.with_label ("Svar 3"); var resposta4 = ny Gtk.Button.with_label ("Svar 4"); // etiketter info var poeng = ny Gtk.Label ("Poeng: 0"); box.pack_start (spørsmål); box.pack_start (tidsfelt); box.pack_start (svar1); box.pack_start (resposta2); box.pack_start (resposta3); box.pack_start (resposta4); box.pack_start (poeng); window.add (boks); window.show_all (); Gtk.main (); retur 0;}

Fangst fra 2013-11-02 21:44:14

For å flytte "tiden" bruker vi GLib.Timeout hvor hver 500 millisekund det vil bli aktivert (det er en løkke der variabelen som inneholder verdien av baren vår vil øke)

GLib.Timeout.add (500, () => {// Få den nåværende fremgangen: // (0.0 -> 0%; 1.0 -> 100%) dobbel fremgang = time_bar.get_fraction (); // Oppdater linjen: progress = progress + 0.01; time_bar.set_fraction (progress); // Gjenta til 100% retur fremgang <1.0;});

Koblinger av interesse 
http://www.valadoc.org/#!wiki=index (du kan finne alle gtk-elementene med metodene deres ...)


Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.

  1.   lozanotux sa

    Veldig bra, la meg spørre deg hvordan jeg kan lage en slags TABS, men vertikalt, selv om de ikke nødvendigvis trenger å være faner, kan de være knapper eller ToggleButtons, men jeg trenger atferden til en fane, at når du berører 1 innholdet kan sees og den andre fanen er deaktivert, jeg vet ikke om jeg forklarer meg selv. Jeg legger igjen et bilde for å se om du kan gi meg litt informasjon å undersøke. Takk skal du ha!

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

    1.    lolbimbo sa

      "Oppsettet" eller teksten endres (for eksempel)?

  2.   pandev92 sa

    Katalansk parla

  3.   bedøvet sa

    Dette er veldig bra, det er faktisk noe som ligner på det jeg lette etter, et spørsmål, kan dette spørsmålet knyttes til terminalen på en eller annen måte?
    For eksempel: Til å begynne med tar jeg meg tid til å svare, jeg lar det være ubegrenset, og det er det jeg vil gjøre.

    Hvilket skrivebordsmiljø vil du installere?
    KDE
    Gnome 3
    Kanel
    Enhet

    Og hver av disse som var knyttet til den respektive installasjonskommandoen i terminalen, sudo apt-get install ubuntu-desktop

    1.    lolbimbo sa

      Ja, du må bare skrive Process.spawn_command_line_async ("apt-get install ubuntu-desktop");

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

  4.   Saúl Uribe sa

    Utmerket, jeg liker innlegget, jeg skal øve (og gleder meg), hilsener