PyGTK 3: מדריך מיני GUI עם Python + GTK + 3

אנו הולכים להכין תוכנית קטנה עם PyGTK 3.0 שעובדת גם עבור PyGTK 3.4. ממשק המשתמש הקטן הזה ילמד אותך כיצד לחלק תוכנית לשני קבצים או יותר.

תוכלו לבקר בהדרכה של סבסטיאן פולסטרל על ה- PyGTK 3 החדש, הנה ההדרכה החדשה, אני משאיר את הקישור:

http://python-gtk-3-tutorial.readthedocs.org/en/latest/index.html

זה הבלוג של סבסטיאן.

http://k-d-w.org/node/88

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

כל התוכניות הגדולות והמורכבות מחולקות לקבצים רבים והקבצים אף ממוקמים בספריות אחרות, כלומר, הם ממוקמים בתיקיות שונות.

נתחיל בדוגמה הקטנה:

הנה קוד הכתיבה בקובץ יחיד בשם gui.py. אנו פותחים את עורך הטקסט של Gedit או את העורך בו אנו משתמשים הכי הרבה, אנו מעתיקים את הקוד למטה ושומרים אותו כ- gui.py

מתוך ייבוא ​​gi.repository Gtk class gui (): def on_open_clicked (עצמי, כפתור): הדפס "כפתור" \ "פתח \" נלחץ "def on_close_clicked (עצמי, כפתור): הדפס" יישום סוגר "Gtk.main_quit () def __init__ (עצמי): self.window = Gtk.Window () self.window.connect ('מחיקת אירוע', Gtk.main_quit) self.box = Gtk.Box () self.window.add (self.box) עצמי. button = Gtk.Button (label = 'Open') self.button.connect ("לחצו", self.on_open_clicked) self.box.pack_start (self.button, True, True, 0) self.button = Gtk.Button ( label = 'סגור') self.button.connect ("לחצו", self.on_close_clicked) self.box.pack_start (כפתור עצמי, נכון, נכון, 0) self.window.show_all () Gtk.main () אם __name__ == '__main__': gui = gui ()

אֶדֶן הַסֶלַע

def on_open_clicked (עצמי, כפתור): לחץ על כפתור "\" פתח \ "נלחץ"

זו פונקציה שמופעלת במסוף כשאנחנו לוחצים על כפתור הפתיחה. האות להפעלתו הוא:

self.button.connect ("לחץ", self.on_open_clicked) def on_close_clicked (עצמי, כפתור): הדפס "יישום סוגר" Gtk.main_quit ()

זו פונקציה שמופעלת כאשר אנו לוחצים על כפתור הסגירה.

סגור את התוכנית שאנחנו מפעילים.

האות להפעיל אותו הוא

self.button.connect ("לחצו", self.on_close_clicked) מיבוא gi.repository Gtk ### אנו קוראים לספריות PyGTK ### class gui (): ### הגדרת המחלקה הנקראת gui היא המחלקה העיקרית # ##

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

self.window = Gtk.Window () ### window ### self.box = Gtk.Box () ### box #### self.button = Gtk.Button (label = 'Open') ### # לחצן פתוח #### self.button = Gtk.Button (label = 'סגור') #### לחצן סגור #### self.window.add (תיבה עצמית) #### התיבה כלולה החלון שנקרא חלון #### self.box.pack_start (כפתור עצמי, נכון, נכון, 0) ##### הכפתור כלול בתיבה שנקראת תיבה ### עצמית.ווינדוס.שואו_כל () ## # אנו מציגים את כל החלון ### gui = gui () ### צור אובייקט gui ####

אנו שמים את התוכנית שלנו בתיקיה שנקראת פשוט במקרה שלנו על שולחן העבודה

FERT

אנו פותחים את התיקיה עם המסוף, במקרה שלי אני משתמש ב- Nemo מ- Linux Mint 14.

סגור

כדי לקמפל הכנסנו את הפיתון המסוף gui.py

ראה את התמונה.

מסוף

כעת נוכל לראות את התוכנית הקטנה שלנו או את היישומון החדש שנוצר באמצעות ספריות PyGTK 3

זהו חלון פשוט עם שני כפתורים.

ללא כותרת

עכשיו אנו מחלקים את התוכנית לשלושה חלקים, ואז אני משאיר את הקוד לשלושת הקבצים.

קובץ gui.py ראשון

מ gi.repository ייבוא ​​Gtk מ להרוס יבוא להרוס מ io יבוא io מחלקה gui (להרוס, io): def __init __ (עצמי): self.window = Gtk.Window () self.window.connect ('מחק אירוע', Gtk .main_quit) self.box = Gtk.Box () self.window.add (self.box) self.button = Gtk.Button (label = 'Open') self.button.connect ("לחץ", self.on_open_clicked ) self.box.pack_start (self.button, True, True, 0) self.button = Gtk.Button (label = 'Close') self.button.connect ("לחצו", self.on_close_clicked) self.box.pack_start (self.button, True, True, 0) self.window.show_all () Gtk.main () if __name__ == '__main__': gui = gui ()

קובץ io.py שני

class io: def on_open_clicked (עצמי, כפתור): לחץ על כפתור "\" פתח \ "נלחץ"

קובץ שלישי destroy.py

מ- gi.repository ייבוא ​​מחלקה Gtk להרוס: def on_close_clicked (עצמי, כפתור): הדפס "יישום סוגר" Gtk.main_quit ()

אנו מניחים את שלושת הקבצים באותה תיקיה במקרה שלנו, התיקיה נקראת פשוט מחולק.

פשוט

להרכיב את שלושת הקבצים. אנו פותחים את התיקיה עם הטרמינל ופשוט מחזירים אותה למסוף

python gui.py

שינויים שבוצעו בקוד gui.py

מההשמדה ייבוא ​​הרס הצהרת ### לייבוא ​​הקובץ שלנו destroy.py ### מ io ייבוא ​​io ### הצהרה לייבוא ​​הקובץ שלנו io.py ### class gui (הרס, io): #### מחלקה ראשית אנו מוסיפים את מחלקות המשנה להרוס ו- io ####

אתה יכול לראות את המשפט

def on_open_clicked (עצמי, כפתור): לחץ על כפתור "\" פתח \ "נלחץ"

זה לא ב- gui.py, זה נמצא בקובץ io.py

משפט

def on_close_clicked (עצמי, כפתור):

הדפס "סגירת יישום"
Gtk.main_quit ()

הוא ממוקם בקובץ destroy.py

כך אנו יכולים לחלק תוכנית לקבצים רבים הממוקמים בספריות שונות בו זמנית.

מצד שני, פייתון הוא עמוד התווך של תוכנה חופשית, והוא מותאם לעבודה עם GTK 3.6 /3.8, שמו PyGTK. העיבוד של פייתון ל- KDE נקרא PyQT.

פייתון מותאם ל- Mac OS ו- Windows.

אני מקווה שמדריך מיני זה של PyGTK3 עזר לך. הם יכולים להשמיע את כל הביקורות הבונות שהם רוצים.

אני מכיר גם כמה Gtk 3.4 /3.6 ו- Vala GTK 3.4 / 3.6.

http://www.youtube.com/watch?v=9ckRn_sx8CE

לבסוף, משתמשי KDE מתנצלים על כך שלא עשו מיני הדרכה עבור KDE.


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

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

*

*

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

  1.   87 דיג'ו

    ב- kde אני מעדיף להשתמש ב- kdevelop (אני חושב שככה זה נקרא) כדי ליצור את הגוי בנחת אבל אני עדיין מתקשה למצוא את התהליכים כדי שזה יקרה x דבר: '(

  2.   st0rmt4il דיג'ו

    נהדר לאלו מאיתנו המשתמשים בפייתון: D!

    ברכות!

  3.   פול דיג'ו

    שלום, אני עוקב אחר הקהילה הזו הרבה זמן ואני לא מאוד בטוח אם זו הפעם הראשונה שאני מגיב או שכבר עשיתי את זה בעבר 😀 (אני לא מאוד נתון לכתוב תגובות ברשת באמת). העניין הוא שאני עושה את זה כדי להשאיר הצעה לאלב ו KZKG ^ גאארה כמנהלים, ואני חושב שזה יהיה רעיון טוב להוסיף תוסף לצביעת תחביר עכשיו, בזמן האחרון אני רואה עוד פוסטים עם קוד בשפות תכנות שונות. אני יודע שיש לא מעט תוספים אבל לא ניסיתי שכן אני לא משתמש ב- WordPress, אז אני משאיר לך לחשוב על כדאיות הבקשה. אני מנצל את ההזדמנות לשאול את שאר הקוראים מה הם חושבים על הרעיון, כי אני יודע שיש שם אנשים שמעדיפים לקרוא את הקוד בלי שום קישוט. אני מתנצל אם כבר הגיבו על כך כאן וזה נדחה משום מה, מכיוון שאיני זוכר שראיתי שום דיון בנושא.

    1.    מריאנוגאודיקס דיג'ו

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

      אבל היי, נוח לי גם עם הפורום ושאנחנו יכולים לדון וללמוד יחד.

      1.    אליוטיים 3000 דיג'ו

        GNU Emacs נוח יותר, מכיוון שלפחות עליכם לבחור באיזה בודק שפות תכנות תרצו לעבוד (אם אתם לא רוצים יותר משקל למעבד שלכם, השתמשו ב- GNU Nano ותהנו ממינימליזם במיטבו).

        1.    מריאנוגאודיקס דיג'ו

          Elio estamos hablando de Worpress . Implementado en el blog Desde Linux. No tiene las funciones para dar color a las letras de los posteos .

          1.    אליוטיים 3000 דיג'ו

            אני מצטער.

        2.    pandev92 דיג'ו

          Naaa emacs נוח למי שיש לו 84 אצבעות XD .., אנשים רגילים, textmate, sublimetext או פנקס רשימות ++ xd

          1.    אליוטיים 3000 דיג'ו

            הדבר הבלתי סביר הוא שלא למדת הקלדה, מה שנדרש כדי להיות מסוגל להתמודד היטב עם GNU Emacs וקיצורי המקשים שלו. בנוסף, ה- GUI שלו מקל עליכם להשתמש בתפריטים שלו (ניתן להשתמש בו ב- Windows, אך לא מומלץ לעשות זאת במצב הרגיל אלא עם מצב שורת הפקודה כדי ש- win32 לא יחרימו את הסקריפט שלכם).

  4.   קארפר דיג'ו

    מדריך מגניב מאוד. אבל אגב, קוד המקור לפיתון לא נערך, הוא שפה מפורשת.

    1.    גיסקארד דיג'ו

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

  5.   HTY דיג'ו

    אולי עדיף ללמוד pytgk2 מכיוון שהגרסה האחרונה הזמינה עבור Windows היא 2.24. סדרה 3 בולטת בהיעדרה. והלשונות הרעות אומרות ש- gnome שובר את כל apis בכל גרסה חדשה.

    1.    מריאנוגאודיקס דיג'ו

      אני מתכנת דגימה עם GTK 3.4 / 3.6 והאמת היא שהם שוברים לך את הסבלנות ואת הראש שלך, אתה צריך לשכתב את הקוד, עכשיו אני מבין מדוע אנשי מנטה לינוקס מתלוננים על GTK ועל פרויקט GNOME.
      לאלה של MINT אני מסכים עם GTK 2.4 זה לא קרה.

  6.   קרלוס דיג'ו

    הדרכה טובה והפניות.
    רק פרט, מאחר שהוכנס קוד, בכניסה לפייתון חובה ויש לכבד אותם בקוד הדוגמה.

    ברכות!

    1.    מריאנוגאודיקס דיג'ו

      אתה יכול להסביר ממה מורכבות הזיהויים החובה בפייתון? אם לומר לך את האמת, מעולם לא שמעתי את זה. אני רגיל מאוד לפורומים של PyGTK 2/3 באנגלית ואולי אני מתעלם מזה.

      1.    גיסקארד דיג'ו

        בפייתון אתה לא משתמש במקשים כמו ב- C או בלוקים מתחילים / סופיים כמו בפסקל, אבל הכל מובן דרך הכניסה שאתה נותן את הקוד. כלומר, הבלוקים מוכרים על ידי כניסה. זו תכונה שאני אוהב במיוחד. אתה נמנע מכתיבת מפתחות ודברים כאלה.

        1.    pandev92 דיג'ו

          אני פשוט לא אוהב את זה, נראה פשוט יותר לשים שני מקשים קטנים או std :: endl; מאשר לראות אם קו xd מנוהל היטב.

          1.    פליפה דיג'ו

            : p המורה לתכנות שלך ישים 0 עבורך. או גרוע מכך, הם יפטרו אותך מעבודתך. החשוב ביותר הוא שהקוד קריא עם כל המשתמע מכך

          2.    pandev92 דיג'ו

            מסתיים בסגירת פלטה, זה גורם לי להיות הרבה יותר קריא XD ..

          3.    גיסקארד דיג'ו

            ברצינות???


            int main(int argc, char *argv[]){program_name = argv[0];while ((argc > 1) && (argv[1][0] == '-')) {switch (argv[1][1]) {case 'v':verbose = 1; break;case 'o':out_file = &argv[1][2];break;case 'l':line_max = atoi(&argv[1][2]);break;default:fprintf(stderr,"Bad option %s\n", argv[1]);usage();}++argv;--argc;} if (argc == 1) {do_file("print.in");} else {while (argc > 1) {do_file(argv[1]);++argv;--argc;}}return (0);}

            אתה רואה? ללא כניסות זה לא מובן במיוחד. וזה קל. עם מורכב יותר, רק המהדר מבין זאת. העניין הוא, מכיוון שאתה צריך בכל מקרה להזדיין (שבני אדם יבינו את הקוד) מדוע זה יהיה מיותר ולהשתמש במפרידים? מספיק עם כניסה וזהו.

          4.    pandev92 דיג'ו

            כמובן, שום דבר לא מובן מכיוון שאתה לא מכבד את כללי הכתיבה הטובה עבור תוכנית c / c ++. מה שעשית תקף לכל דבר, כגון קינון פונקציה, בתוך פונקציה בתוך פונקציה אחרת שנמצאת בתוך פונקציה אחרת, אז אני רוצה לראות אותך xd אם אתה מסוגל להבין אותה.

          5.    pandev92 דיג'ו

            דרך אגב, עם שני מבטים, ניתן להבין את הקוד הזה xD

          6.    גיסקארד דיג'ו

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

          7.    אתאוס דיג'ו

            שתיהן טובות, המוטות והלא מונעות, לדעתי אני מעדיף את סגנון נקודה-פסיק או אודם, בדומה לפיתון אך הכניסה אינה הכרחית.

            כך מבינים טוב יותר: P:

            הד 'int main (int argc, char * argv []) {program_name = argv [0]; while ((argc> 1) && (argv [1] [0] ==' - ')) {switch (argv [ 1] [1]) {מקרה 'v': מילולית = 1; break; case 'o': out_file = & argv [1] [2]; break; case 'l': line_max = atoi (& argv [1] [2]); break; ברירת מחדל: fprintf (stderr, »אפשרות רעה % s \ n », argv [1]); שימוש ();} ++ argv; –argc;} אם (argc == 1) {do_file (" print.in ");} אחר {while (argc> 1 ) {do_file (argv [1]); ++ argv; –argc;}} return (0);} '| פרל -p -e 's / \ {/ \ {\ n \ t / g; s / \; / \; \ n \ t / g; s / \ t \} / \} / g;'

            ברכות 😀

      2.    גיסקארד דיג'ו

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

        1.    גיסקארד דיג'ו

          כבר ראיתי מה הבעיה: תג CODE מסיר את כל הרווחים והכרטיסיות (זה לא אמור לעשות את זה !!!) אבל אם אתה שם עליו nbsp אז הקוד נראה בסדר. A0 בהקס (160 בדצמבר) אם כי אני חושב שזה עשוי להיות תלוי בגופן (אני לא יודע). אם משתמשים בו אז זה יוצא כך:

          def fib(n):
              a, b = 0, 1
              while a < n:
                  print(a)
                  a, b = b, a+b

          שבמבחנים שלי זה נראה טוב, אבל אין לי תצוגה מקדימה כשאני מפרסם תשובות (וזה צריך להיות !!!) אם זה לא יוצא זו לא אשמתי 😉

          1.    מריאנוגאודיקס דיג'ו

            עיין בדוגמאות שסבסטיאן פולסטרל נותן בהדרכת PyGTK 3 שלו, סבסטיאן אינו מציב תוויות.

            דוגמא :

            http://python-gtk-3-tutorial.readthedocs.org/en/latest/entry.html#example

            אתה יכול לראות את כל ההדרכות של סבסטיאן.

          2.    גיסקארד דיג'ו

            אני לא יודע למה אתה מתכוון. מה שאני אומר זה שכאן, בפוסטים, לא ניתן להשתמש בתג ה- HTML «CODE» כך שמה שאתה שם כקוד וזה ייצא מוטה היטב. בדף אליו אתה מפנה, אם אתה רואה את מקורות העמודים, תראה שהוא לא משתמש ב- CODE אלא משתמש במפרידי HTML אחרים.
            זה לא מנוגד לקוד שהכנסת אלא מצביע על פגם במערכת הפרסום של אתר זה. מה שאולי מנהלים יכולים לתקן.
            כשאני מדבר על תגים אני כמובן מדבר על HTML, ולא על פייתון. בכל מקרה, אם אתה שם קוד ללא כניסה בפייתון זה פשוט לא יעבוד. אם מתחיל חדש יבוא ועתיק את הקוד כפי שהוא מופיע בהודעה זו וינסה להריץ אותו, הוא ייכשל. אתה עלול להיות מתוסכל מכיוון שאתה מתחיל. שוב, התקלה אינה שלך; ובתשובה הקודמת המיידית שלי מה שעשיתי היה לתת דרך לפתור את הבעיה מרמת המשתמש-פוסט.

          3.    מריאנוגאודיקס דיג'ו

            אתה צודק לחלוטין, הייתי צריך להעלות תמונות במקום להעתיק את הקוד.
            כדי להראות כיצד הצהרות מסודרות כראוי ב- PyGTK 3.

  7.   פליפה דיג'ו

    לתכנות עם פיתון אני ממליץ להשתמש ב- Eclipse עם התוסף PyDev, או ה- Pychar m

  8.   לואיקס דיג'ו

    כאמור לעיל, זו בדיוק הסיבה שאני לא אוהב פיתון, בגלל הכניסה. כפי שראינו, ביצוע העתקה והדבקה לא יעבוד, מה שלא קורה בשפות אחרות כמו C, Java, PHP וכו '.

    הדבר קריא, אנו מיישמים מייפה קוד (כמו http://indentcode.net/ ) ומוכן,

    המכוער קבוע, אבל אם אין כניסה וההיגיון משתנה, אנחנו נשמעים ..

  9.   קרלוס דיג'ו

    אני חדש ב- PyGTK, האם ניתן לקיים אינטראקציה עם סקריפטים של מעטפת בשפה זו?

    1.    שלום דיג'ו

      תודה על ההדרכה.

      ברכות.