יצירת אפליקציית Vala + Gtk3. [חלק 1]

אחרי פוסט ראשון קראתי תגובה שעדיף להתחיל במשהו מורכב יותר מ"שלום שלום ", ואז אעשה רצף (או 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;}

לכידה מ 2013-11-02 21:44:14

כדי להזיז את "הזמן" אנו משתמשים ב- 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 בשיטות שלהם ...)


השאירו את התגובה שלכם

כתובת הדוא"ל שלך לא תפורסם. שדות חובה מסומנים *

*

*

  1. אחראי לנתונים: מיגל אנחל גטון
  2. מטרת הנתונים: בקרת ספאם, ניהול תגובות.
  3. לגיטימציה: הסכמתך
  4. מסירת הנתונים: הנתונים לא יועברו לצדדים שלישיים אלא בהתחייבות חוקית.
  5. אחסון נתונים: מסד נתונים המתארח על ידי Occentus Networks (EU)
  6. זכויות: בכל עת תוכל להגביל, לשחזר ולמחוק את המידע שלך.

  1.   lozanotux דיג'ו

    טוב מאוד, אני אשאל אותך איך אוכל ליצור סוג של טאבים אבל אנכית, למרות שהם לא בהכרח חייבים להיות כרטיסיות, הם יכולים להיות כפתורים או כפתורי ToggleButt, אבל אני זקוק להתנהגות של כרטיסייה, שכאשר נוגעים 1 בתוכן שלה והכרטיסייה השנייה מושבתת, אני לא יודע אם אני מסביר את עצמי, אני משאיר תמונה כדי לראות אם אתה יכול לתת לי קצת מידע לחקירה. תודה!

    תמונה: http://i.imm.io/1jURw.png

    1.    לולבימבו דיג'ו

      ה"פריסה "או שינוי הטקסט (למשל)?

  2.   pandev92 דיג'ו

    פארלה קטלאנית

  3.   הָמוּם דיג'ו

    זה טוב מאוד למעשה זה משהו דומה למה שחיפשתי, שאלה, האם שאלה זו יכולה להיות קשורה לטרמינל בצורה כלשהי?
    לדוגמא: כדי להתחיל אני לוקח את הזמן לענות אני משאיר את זה ללא הגבלה וזה מה שהייתי רוצה לעשות.

    איזו סביבת שולחן עבודה ברצונך להתקין?
    KDE
    Gnome 3
    קינמון
    אחדות

    וכל אחד מאלה שקושרו לפקודת ההתקנה המתאימה שלו במסוף, sudo apt-get install ubuntu-desktop

    1.    לולבימבו דיג'ו

      כן, יהיה עליכם רק לכתוב Process.spawn_command_line_async ("apt-get install ubuntu-desktop");

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

  4.   שאול אוריבה דיג'ו

    מצוין, אני אוהב את ההודעה, אני אתאמן (ואני מצפה להתקדם), בברכה