Создание приложения Vala + Gtk3. [1-я часть]

После первый пост Прочитал комментарий, что лучше было бы начать с чего-то более сложного, чем «привет, мир», тогда сделаю последовательность (3 или 4) пост о создании простого приложения (с vala + gtk 3).

Приложение будет состоять из простой игры вопросов и ответов с несколькими вариантами ответов (тип «Викторина»), в которой ответ на 3 вопроса ошибочно завершается (игра окончена), и цель состоит в том, чтобы ответить на как можно больше вопросов, для каждого вопроса у вас есть ограниченное время. повторить.

дизайн

Основным дизайном нашего приложения будет:

приложение

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

Дизайн Код
Как мы видим в дизайне, мы можем видеть элементы gtk, которые мы будем использовать:

Ответы -> Кнопка.

Вопрос -> Ярлык.

Время -> ProgressBar.

Очки и неправильные / правильные вопросы -> Ярлык.

Мы видим, что у нас вертикальная структура, поэтому мы можем использовать GBox вертикально.

Код

int main (строка [] аргументы) {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 ("Question?"); // прогрессивная шкала времени var time_bar = new Gtk.ProgressBar (); timebar.set_text («Время»); time_bar.set_show_text (истина); // Кнопки ответа 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"); // информация о ярлыках var points = new Gtk.Label ("Points: 0"); box.pack_start (вопрос); box.pack_start (time_bar); box.pack_start (reply1); box.pack_start (респоста2); box.pack_start (респоста3); box.pack_start (респоста4); box.pack_start (очки); window.add (поле); window.show_all (); Gtk.main (); return 0;}

Захват от 2013 11:02:21

Чтобы переместить «время», мы используем 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% return progress <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.   пандев92 сказал

    Каталонский парла

  3.   ошеломлен сказал

    Это очень хорошо, ведь это что-то похожее на то, что я искал, вопрос, может ли этот вопрос быть каким-то образом связан с терминалом?
    Например: для начала я нахожу время, чтобы ответить, я оставляю его без ограничений, и это то, что я хотел бы сделать.

    Какую среду рабочего стола вы хотите установить?
    KDE
    Gnome 3
    Соевые свечи Корица
    Unity

    И каждый из них был связан с соответствующей командой установки в терминале, 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.   Саул Урибе сказал

    Отлично, пост понравился, буду практиковаться (и вижу, как продвинуться), привет