Після перший пост Я прочитав коментар, що краще почати з чогось більш складного, ніж "привіт світ", тоді я буду робити послідовність (Або 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;}
Для переміщення "часу" ми використовуємо 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 з їх методами ...)
Дуже добре, дозвольте запитати вас, як я можу зробити своєрідні Вкладки, але вертикально, хоча вони не обов'язково повинні бути вкладками, вони можуть бути кнопками або ToggleButtons, але мені потрібна поведінка вкладки, яка при торканні 1 її вмісту можна побачити, а інша вкладка відключена, я не знаю, чи поясню я себе, залишаю зображення, щоб побачити, чи можете ви дати мені якусь інформацію для дослідження. Дякую!
ЗОБРАЖЕННЯ: http://i.imm.io/1jURw.png
"Макет" або зміна тексту (наприклад)?
Каталонська парла
Це дуже добре, насправді це щось подібне до того, що я шукав, питання, чи може це питання якимось чином бути пов'язане з терміналом?
Наприклад: Для початку я витрачаю час на відповідь, я залишаю його необмеженим, і це те, що я хотів би зробити.
Яке середовище робочого столу ви хочете встановити?
KDE
Гном 3
Кориця
Єдність
І кожен із них, який був зв’язаний із відповідною командою встановлення в терміналі, sudo apt-get install ubuntu-desktop
Так, вам просто потрібно було б написати Process.spawn_command_line_async ("apt-get install ubuntu-desktop");
http://valadoc.org/#!api=glib-2.0/GLib.Process.spawn_command_line_sync
Відмінно, мені подобається пост, буду практикуватися (і з нетерпінням чекаю), вітаю