אחרי פוסט ראשון קראתי תגובה שעדיף להתחיל במשהו מורכב יותר מ"שלום שלום ", ואז אעשה רצף (או 3 4) פוסט יוצר יישום פשוט (עם vala + gtk 3).
היישום יורכב ממשחק שאלה ותשובות רב-ברירה פשוט (סוג טריוויה), בו מענה על 3 שאלות מסתיים שלא כהלכה (משחק נגמר), והמטרה היא לענות על כמה שיותר שאלות, לכל שאלה יש לך זמן מוגבל להשיב.
תכנית
העיצוב העיקרי של היישום שלנו יהיה:
בהמשך נניח כמה כפתורים שיעניקו לנו אפשרות של 50% (ביטול שתי תשובות שגויות), נקפיא זמן, נעביר שאלה. בכולם ניתן להשתמש רק פעם אחת, בהיותם מושבתים פעם אחת.
עיצוב א ³ CA אומר
כפי שניתן לראות בתכנון אנו יכולים לראות את אלמנטים ה- gtk בהם נשתמש:
תשובות -> כפתור.
שאלה -> תווית.
זמן -> ProgressBar.
נקודות שגויות / נכונות ושאלות -> תווית.
אנו יכולים לראות שיש לנו מבנה אנכי ולכן אנו יכולים להשתמש ב- GBox בצורה אנכית.
³ CA אומר
int main (מחרוזת [] args) {Gtk.init (ref args); חלון var = 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 תיבה = Gtk.Box חדש (Gtk.Orientation.VERTICAL, 0); box.set_spacing (10); // תווית לשאלה var question = new Gtk.Label ("שאלה?"); // סרגל זמן פרוגרסיבי var time_bar = Gtk.ProgressBar חדש (); time_bar.set_text ("זמן"); time_bar.set_show_text (נכון); // לחצני תגובה var response1 = Gtk.Button.with_label חדש ("תגובה 1"); var resposta2 = Gtk.Button.with_label חדש ("תשובה 2"); var resposta3 = Gtk.Button.with_label חדש ("תגובה 3"); var resposta4 = Gtk.Button.with_label חדש ("תגובה 4"); // תוויות מידע var נקודות = Gtk.Label חדש ("נקודות: 0"); box.pack_start (שאלה); box.pack_start (שורת זמן); box.pack_start (reply1); 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%) התקדמות כפולה = time_bar.get_fraction (); // עדכן את הסרגל: התקדמות = התקדמות + 0.01; time_bar.set_fraction (התקדמות); // חזור על כך עד 100% התקדמות החזרה <1.0;});
קישורים מעניינים
http://www.valadoc.org/#!wiki=index (אתה יכול למצוא את כל האלמנטים gtk בשיטות שלהם ...)
טוב מאוד, אני אשאל אותך איך אוכל ליצור סוג של טאבים אבל אנכית, למרות שהם לא בהכרח חייבים להיות כרטיסיות, הם יכולים להיות כפתורים או כפתורי ToggleButt, אבל אני זקוק להתנהגות של כרטיסייה, שכאשר נוגעים 1 בתוכן שלה והכרטיסייה השנייה מושבתת, אני לא יודע אם אני מסביר את עצמי, אני משאיר תמונה כדי לראות אם אתה יכול לתת לי קצת מידע לחקירה. תודה!
תמונה: http://i.imm.io/1jURw.png
ה"פריסה "או שינוי הטקסט (למשל)?
פארלה קטלאנית
זה טוב מאוד למעשה זה משהו דומה למה שחיפשתי, שאלה, האם שאלה זו יכולה להיות קשורה לטרמינל בצורה כלשהי?
לדוגמא: כדי להתחיל אני לוקח את הזמן לענות אני משאיר את זה ללא הגבלה וזה מה שהייתי רוצה לעשות.
איזו סביבת שולחן עבודה ברצונך להתקין?
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
מצוין, אני אוהב את ההודעה, אני אתאמן (ואני מצפה להתקדם), בברכה