Створення програми Vala + Gtk3. [1-а частина]

Після перший пост Я прочитав коментар, що краще почати з чогось більш складного, ніж "привіт світ", тоді я буду робити послідовність (Або 3 4) допис про створення простого додатка (з vala + gtk 3).

Додаток буде складатися з простої гри з питаннями та відповідями з декількома варіантами (тип "Дрібниці"), в якій відповідь на 3 запитання закінчується помилково (гра закінчена), а мета полягає в тому, щоб відповісти на якомога більше запитань, для кожного питання у вас обмежений час відповісти.

Дизайн

Основним дизайном нашої програми буде:

додаток

Пізніше ми поставимо кілька кнопок, які дадуть нам можливість 50% (усуваючи дві неправильні відповіді), заморозити час, передати питання. Всі вони можуть бути використані лише один раз, відключені один раз.

Дизайн a Код
Як ми бачимо в дизайні, ми можемо побачити елементи gtk, які ми будемо використовувати:

Відповіді -> Кнопка.

Питання -> Етикетка.

Час -> ProgressBar.

Неправильні / правильні пункти та питання -> Етикетка.

Ми бачимо, що у нас вертикальна структура, тому ми можемо використовувати GBox вертикально.

Код

int main (рядок [] args) {Gtk.init (ref args); var window = new Gtk.Window (); window.title = "додаток"; window.window_position = Gtk.WindowPosition.CENTER; window.set_default_size (300, 340); window.destroy.connect (Gtk.main_quit); window.set_border_width (10); // вертикальна коробка var box = new Gtk.Box (Gtk.Orientation.VERTICAL, 0); box.set_spacing (10); // Мітка для питання var question = new Gtk.Label ("Питання?"); // програмувальний часовий рядок var time_bar = new Gtk.ProgressBar (); time_bar.set_text ("Час"); time_bar.set_show_text (true); // Кнопки відповіді var response1 = new Gtk.Button.with_label ("Response 1"); var resposta2 = new Gtk.Button.with_label ("Відповісти 2"); var resposta3 = new Gtk.Button.with_label ("Відповісти 3"); var resposta4 = new Gtk.Button.with_label ("Відповісти 4"); // мітки info var points = new Gtk.Label ("Points: 0"); box.pack_start (питання); box.pack_start (time_bar); box.pack_start (відповідь1); box.pack_start (resposta2); box.pack_start (resposta3); box.pack_start (resposta4); box.pack_start (бали); window.add (вікно); window.show_all (); Gtk.main (); повернути 0;}

Захоплення з 2013-11-02 21:44:14

Для переміщення "часу" ми використовуємо GLib.Timeout, де кожні 500 мілісекунд він буде активований (це цикл, де змінна, що містить значення нашого бару, буде збільшуватися)

GLib.Timeout.add (500, () => {// Отримати поточний прогрес: // (0.0 -> 0%; 1.0 -> 100%) double progress = time_bar.get_fraction (); // Оновіть рядок: progress = progress + 0.01; time_bar.set_fraction (progress); // Повторюємо до 100% повернення прогресу <1.0;});

Посилання, що цікавлять 
http://www.valadoc.org/#!wiki=index (Ви можете знайти всі елементи gtk з їх методами ...)


Залиште свій коментар

Ваша електронна адреса не буде опублікований. Обов'язкові для заповнення поля позначені *

*

*

  1. Відповідальний за дані: Мігель Анхель Гатон
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.

  1.   лозанотукс - сказав він

    Дуже добре, дозвольте запитати вас, як я можу зробити своєрідні Вкладки, але вертикально, хоча вони не обов'язково повинні бути вкладками, вони можуть бути кнопками або ToggleButtons, але мені потрібна поведінка вкладки, яка при торканні 1 її вмісту можна побачити, а інша вкладка відключена, я не знаю, чи поясню я себе, залишаю зображення, щоб побачити, чи можете ви дати мені якусь інформацію для дослідження. Дякую!

    ЗОБРАЖЕННЯ: http://i.imm.io/1jURw.png

    1.    лолбімбо - сказав він

      "Макет" або зміна тексту (наприклад)?

  2.   pandev92 - сказав він

    Каталонська парла

  3.   приголомшений - сказав він

    Це дуже добре, насправді це щось подібне до того, що я шукав, питання, чи може це питання якимось чином бути пов'язане з терміналом?
    Наприклад: Для початку я витрачаю час на відповідь, я залишаю його необмеженим, і це те, що я хотів би зробити.

    Яке середовище робочого столу ви хочете встановити?
    KDE
    Гном 3
    Кориця
    Єдність

    І кожен із них, який був зв’язаний із відповідною командою встановлення в терміналі, sudo apt-get install ubuntu-desktop

    1.    лолбімбо - сказав він

      Так, вам просто потрібно було б написати Process.spawn_command_line_async ("apt-get install ubuntu-desktop");

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

  4.   Саул Урібе - сказав він

    Відмінно, мені подобається пост, буду практикуватися (і з нетерпінням чекаю), вітаю