Tạo ứng dụng Vala + Gtk3. [Phần 1]

Sau bài đăng đầu tiên Tôi đọc một nhận xét rằng tốt hơn là bắt đầu với một thứ gì đó phức tạp hơn là "chào thế giới", sau đó tôi sẽ lập một chuỗi (3 o 4) đăng tạo một ứng dụng đơn giản (với vala + gtk 3).

Ứng dụng sẽ bao gồm một trò chơi câu hỏi và trả lời trắc nghiệm đơn giản (kiểu Trắc nghiệm), trong đó trả lời sai 3 câu hỏi kết thúc (trò chơi kết thúc) và mục tiêu là trả lời càng nhiều câu hỏi càng tốt, cho mỗi câu hỏi bạn có thời gian giới hạn. Đáp lại.

Thiết kế

Thiết kế chính của ứng dụng của chúng tôi sẽ là:

ứng dụng

Sau đó, chúng tôi sẽ đặt một số nút sẽ cung cấp cho chúng tôi tùy chọn 50% (loại bỏ hai câu trả lời sai), đóng băng thời gian, vượt qua một câu hỏi. Tất cả chúng chỉ có thể được sử dụng một lần, bị vô hiệu hóa khi sử dụng.

Thiết kế một 
Như chúng ta thấy trong thiết kế, chúng ta có thể thấy các phần tử gtk mà chúng ta sẽ sử dụng:

Câu trả lời -> Nút.

Câu hỏi -> Nhãn.

Thời gian -> Thanh tiến trình.

Điểm sai / đúng và Câu hỏi -> Dán nhãn.

Chúng ta có thể thấy rằng chúng ta có cấu trúc theo chiều dọc do đó chúng ta có thể sử dụng GBox theo chiều dọc.

int main (string [] args) {Gtk.init (ref args); var window = new Gtk.Window (); window.title = "ứng dụng"; window.window_position = Gtk.WindowPosition.CENTER; window.set_default_size (300, 340); window.destroy.connect (Gtk.main_quit); window.set_border_width (10); // hộp dọc var box = new Gtk.Box (Gtk.Orientation.VERTICAL, 0); box.set_spacing (10); // Nhãn cho câu hỏi var question = new Gtk.Label ("Câu hỏi?"); // thanh chương trình thời gian var time_bar = new Gtk.ProgressBar (); timebar.set_text ("Thời gian"); time_bar.set_show_text (true); // Các nút phản hồi var response1 = new Gtk.Button.with_label ("Phản hồi 1"); var resposta2 = new Gtk.Button.with_label ("Trả lời 2"); var resposta3 = new Gtk.Button.with_label ("Trả lời 3"); var resposta4 = new Gtk.Button.with_label ("Trả lời 4"); // nhãn thông tin var points = new Gtk.Label ("Points: 0"); box.pack_start (câu hỏi); box.pack_start (time_bar); box.pack_start (reply1); box.pack_start (resposta2); box.pack_start (resposta3); box.pack_start (resposta4); box.pack_start (điểm); window.add (hộp); window.show_all (); Gtk.main (); trả về 0;}

Chụp từ 2013-11-02 21:44:14

Để di chuyển "thời gian", chúng tôi sử dụng GLib.Timeout trong đó cứ sau 500 mili giây nó sẽ được kích hoạt (nó là một vòng lặp trong đó biến chứa giá trị của thanh của chúng tôi sẽ tăng lên)

GLib.Timeout.add (500, () => {// Lấy tiến trình hiện tại: // (0.0 -> 0%; 1.0 -> 100%) double process = time_bar.get_fraction (); // Cập nhật thanh: tiến độ = tiến trình + 0.01; time_bar.set_fraction (tiến trình); // Lặp lại cho đến khi 100% trả về tiến trình <1.0;});

Liên kết quan tâm 
http://www.valadoc.org/#!wiki=index (bạn có thể tìm thấy tất cả các phần tử gtk bằng các phương thức của chúng ...)


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.

  1.   lozanotux dijo

    Hay lắm, cho em hỏi làm cách nào để tạo 1 loại TABS nhưng theo chiều dọc, mặc dù chúng không nhất thiết phải là tab mà có thể là nút hoặc ToggleButtons, nhưng em cần hành vi của một tab, tức là khi chạm vào XNUMX nội dung của nó. is saw and The other Tab bị vô hiệu hóa, không biết bạn giải thích cho mình, mình để lại hình ảnh xem bạn có thể cho mình xin chút thông tin để mình điều tra. Cảm ơn bạn!

    HÌNH ẢNH: http://i.imm.io/1jURw.png

    1.    lolbimbo dijo

      «Bố cục» hay thay đổi văn bản (ví dụ)?

  2.   pandev92 dijo

    Catalan parla

  3.   choáng váng dijo

    Điều này rất tốt trong thực tế, nó giống với những gì tôi đang tìm kiếm, một câu hỏi, câu hỏi này có thể được liên kết với thiết bị đầu cuối theo bất kỳ cách nào không?
    Ví dụ: Để bắt đầu, tôi dành thời gian để trả lời, tôi để nó không giới hạn và đó sẽ là điều tôi muốn làm.

    Bạn muốn cài đặt môi trường máy tính để bàn nào?
    KDE
    Gnome 3
    Quế
    Unity

    Và mỗi cái này được liên kết với lệnh cài đặt tương ứng của nó trong terminal, sudo apt-get install ubuntu-desktop

    1.    lolbimbo dijo

      Có, bạn chỉ cần viết Process.spawn_command_line_async ("apt-get install ubuntu-desktop");

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

  4.   Saul Uribe dijo

    Tuyệt vời, tôi thích bài đăng này, tôi sẽ luyện tập (và tôi sẽ tiếp tục), lời chào