μετά την πρώτη θέση Διάβασα ένα σχόλιο ότι θα ήταν καλύτερο να ξεκινήσετε με κάτι πιο περίπλοκο από ένα "γεια σας κόσμο", τότε θα κάνω μια ακολουθία (3 o 4) δημοσίευση δημιουργίας μιας απλής εφαρμογής (με vala + gtk 3).
Η εφαρμογή θα αποτελείται από ένα απλό παιχνίδι ερωτήσεων και απαντήσεων πολλαπλής επιλογής (τύπος Trivia), στο οποίο η απάντηση σε 3 ερωτήσεις λάθος τελειώνει (παιχνίδι τελείωσε) και ο στόχος είναι να απαντήσετε σε όσο το δυνατόν περισσότερες ερωτήσεις, για κάθε ερώτηση που έχετε περιορισμένο χρόνο απάντηση.
Σχέδιο
Ο κύριος σχεδιασμός της εφαρμογής μας θα είναι:
Αργότερα θα βάλουμε μερικά κουμπιά που θα μας δώσουν την επιλογή 50% (εξαλείφοντας δύο λανθασμένες απαντήσεις), παγώστε το χρόνο, περάστε μια ερώτηση. Όλα αυτά μπορούν να χρησιμοποιηθούν μόνο μία φορά, απενεργοποιημένα μόλις χρησιμοποιηθούν.
Σχεδιασμός α Κώδικας
Όπως μπορούμε να δούμε στο σχεδιασμό μπορούμε να δούμε τα στοιχεία gtk που θα χρησιμοποιήσουμε:
Απαντήσεις -> Κουμπί.
Ερώτηση -> Ετικέτα.
Ώρα -> ProgressBar.
Λάθος / σωστά σημεία και ερωτήσεις -> Ετικέτα.
Μπορούμε να δούμε ότι έχουμε μια κάθετη δομή, επομένως μπορούμε να χρησιμοποιήσουμε το GBox κάθετα.
Κώδικας
int main (string [] args) {Gtk.init (ref args); var window = νέο 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 = νέο Gtk.Box (Gtk.Orientation.VERTICAL, 0); box.set_spacing (10); // Ετικέτα για την ερώτηση var question = new Gtk.Label ("Question?"); // time bar bar var time_bar = νέο Gtk.ProgressBar (); timebar.set_text ("Ώρα"); time_bar.set_show_text (αληθινό); // Κουμπιά απόκρισης var response1 = νέο Gtk.Button.with_label ("Response 1"); var resposta2 = νέο Gtk.Button.with_label ("Απάντηση 2"); var resposta3 = νέο Gtk.Button.with_label ("Απάντηση 3"); var resposta4 = νέο 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;}
Για να μετακινήσουμε το "time" χρησιμοποιούμε το GLib. Timeout όπου κάθε 500 χιλιοστά του δευτερολέπτου θα ενεργοποιείται (είναι ένας βρόχος όπου θα αυξάνεται η μεταβλητή που περιέχει την τιμή της γραμμής μας)
GLib.Timeout.add (500, () => {// Λήψη της τρέχουσας προόδου: // (0.0 -> 0%; 1.0 -> 100%) διπλή πρόοδος = time_bar.get_fraction (); // Ενημέρωση της γραμμής: πρόοδος = πρόοδος + 0.01; time_bar.set_fraction (πρόοδος); // Επανάληψη έως 100% πρόοδος επιστροφής <1.0;});
Σύνδεσμοι ενδιαφέροντος
http://www.valadoc.org/#!wiki=index (μπορείτε να βρείτε όλα τα στοιχεία gtk με τις μεθόδους τους ...)
Πολύ καλό, θα σας ρωτήσω πώς μπορώ να φτιάξω ένα είδος TABS αλλά κάθετα, αν και δεν πρέπει απαραίτητα να είναι καρτέλες, μπορεί να είναι κουμπιά ή ToggleButtons, αλλά χρειάζομαι τη συμπεριφορά μιας καρτέλας, που όταν αγγίζω 1 το περιεχόμενό της εμφανίζεται και η άλλη καρτέλα είναι απενεργοποιημένη, δεν ξέρω αν εξηγώ τον εαυτό μου, αφήνω μια εικόνα για να δω αν μπορείτε να μου δώσετε κάποιες πληροφορίες για διερεύνηση. Σας ευχαριστώ!
ΕΙΚΟΝΑ: http://i.imm.io/1jURw.png
Η "διάταξη" ή η αλλαγή κειμένου (για παράδειγμα);
Καταλανικά parla
Αυτό είναι πολύ καλό στην πραγματικότητα είναι κάτι παρόμοιο με αυτό που έψαχνα, μια ερώτηση, θα μπορούσε αυτή η ερώτηση να συνδεθεί με το τερματικό με οποιονδήποτε τρόπο;
Για παράδειγμα: Για να ξεκινήσω, αφιερώνω χρόνο για να απαντήσω, το αφήνω σε απεριόριστο και αυτό θα ήθελα να κάνω.
Τι περιβάλλον επιφάνειας εργασίας θέλετε να εγκαταστήσετε;
KDE
Gnome 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
Εξαιρετικά, μου αρέσει η ανάρτηση, θα εξασκηθώ (και βλέπω να προχωρά), χαιρετισμούς