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à:
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 Mã
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.
Mã
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;}
Để 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 ...)
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
«Bố cục» hay thay đổi văn bản (ví dụ)?
Catalan parla
Đ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
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
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