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:
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;}
"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 ...)
Ç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
"Düzen" mi yoksa metin değişikliği (örneğin)?
Katalanca parla
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
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
Mükemmel, gönderiyi beğendim, pratik yapacağım (ve ilerlemeyi düşünüyorum), selamlar