Vala + Gtk3 uygulaması oluşturma. [1. bölüm]

Sonra ilk sonrası "Merhaba dünya" dan daha karmaşık bir şeyle başlamanın daha iyi olacağına dair bir yorum okudum, sonra bir sekans yapacağım (O 3 4) basit bir uygulama oluşturma sonrası (vala + gtk 3 ile).

Uygulama, basit bir çoktan seçmeli soru ve cevap oyunundan (Trivia türü) oluşacaktır, bu oyunda 3 soru yanlış cevaplanır (oyun sona erer) ve amaç mümkün olduğunca çok soruyu cevaplamaktır, her soru için sınırlı bir süreniz vardır. cevap için.

Dizayn

Uygulamamızın ana tasarımı şöyle olacaktır:

uygulamayı yükleyeceğiz

Daha sonra bize% 50 (iki yanlış cevabı ortadan kaldırarak) seçeneği verecek, zamanı donduracak, bir soru geçecek bazı butonlar koyacağız. Hepsi yalnızca bir kez kullanılabilir, bir kez kullanıldığında devre dışı bırakılır.

Tasarım a Kod
Tasarımda da görebileceğimiz gibi kullanacağımız gtk öğelerini görebiliriz:

Cevaplar -> Düğme.

Soru -> Etiket.

Zaman -> ProgressBar.

Yanlış / doğru noktalar ve Sorular -> Etiket.

Dikey bir yapıya sahip olduğumuzu görebiliyoruz, bu nedenle GBox'u dikey olarak kullanabiliyoruz.

Kod

int ana (dizge [] değiştirgeler) {Gtk.init (başvuru bağımsız değişkenleri); var window = new Gtk.Window (); window.title = "uygulama"; window.window_position = Gtk.WindowPosition.CENTER; window.set_default_size (300, 340); window.destroy.connect (Gtk.main_quit); window.set_border_width (10); // dikey kutu var box = new Gtk.Box (Gtk.Orientation.VERTICAL, 0); box.set_spacing (10); // Sorunun etiketi var soru = new Gtk.Label ("Soru?"); // zaman programı çubuğu var time_bar = new Gtk.ProgressBar (); timebar.set_text ("Zaman"); time_bar.set_show_text (doğru); // Yanıt düğmeleri var response1 = new Gtk.Button.with_label ("Response 1"); var resposta2 = new Gtk.Button.with_label ("Yanıt 2"); var resposta3 = new Gtk.Button.with_label ("Yanıt 3"); var resposta4 = new Gtk.Button.with_label ("Yanıt 4"); // etiketler bilgi var puanlar = new Gtk.Label ("Puanlar: 0"); box.pack_start (soru); box.pack_start (zaman_ çubuğu); box.pack_start (yanıt1); box.pack_start (resposta2); box.pack_start (resposta3); box.pack_start (resposta4); box.pack_start (puan); window.add (kutu); window.show_all (); Gtk.main (); dönüş 0;}

2013-11-02 21:44:14 arası yakalama

"Zamanı" hareket ettirmek için, her 500 milisaniyede bir etkinleştirileceği GLib.Timeout kullanıyoruz (bu, çubuğumuzun değerini içeren değişkenin artacağı bir döngüdür)

GLib.Timeout.add (500, () => {// Mevcut ilerlemeyi alın: // (0.0 -> 0%; 1.0 ->% 100) double progress = time_bar.get_fraction (); // Çubuğu güncelleyin: progress = progress + 0.01; time_bar.set_fraction (progress); //% 100 ilerleme dönüşüne kadar tekrarlayın <1.0;});

İlgi alanları 
http://www.valadoc.org/#!wiki=index (tüm gtk öğelerini yöntemleriyle bulabilirsiniz ...)


Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: Miguel Ángel Gatón
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.

  1.   Lozanotux dijo

    Çok iyi, size nasıl bir SEKME oluşturabileceğimi soracağım, ancak dikey olarak, sekme olmaları gerekmese de düğmeler veya ToggleButtons olabilirler, ancak bir sekmenin davranışına ihtiyacım var, 1 görülüyor ve diğer sekme devre dışı, kendimi açıklar mıyım bilmiyorum, araştırmam için bana bazı bilgiler verebilir misiniz diye bir görüntü bırakıyorum. Teşekkür ederim!

    GÖRÜNTÜ: http://i.imm.io/1jURw.png

    1.    hahaha dijo

      "Düzen" mi yoksa metin değişikliği (örneğin)?

  2.   pandev92 dijo

    Katalanca parla

  3.   afallamış dijo

    Bu çok iyi aslında aradığıma benzer bir soru, bu soru terminale herhangi bir şekilde bağlanabilir mi?
    Örneğin: Başlamak için cevap vermek için zaman ayırıyorum, onu sınırsız bırakıyorum ve yapmak istediğim şey bu.

    Hangi masaüstü ortamını kurmak istiyorsunuz?
    KDE
    Gnome 3
    Tarçın
    Birlik

    Ve bunların her biri terminaldeki ilgili yükleme komutuyla bağlantılı olan sudo apt-get install ubuntu-desktop

    1.    hahaha dijo

      Evet, Process.spawn_command_line_async ("apt-get install ubuntu-desktop") yazmanız yeterlidir;

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

  4.   Saúl Uribe dijo

    Mükemmel, gönderiyi beğendim, pratik yapacağım (ve ilerlemeyi düşünüyorum), selamlar