הצעדים הראשונים עם Python + Qt # 1

הדרכה זו מתמקדת בהוראת השימוש במסגרת QT באמצעות פייתון כשפת תכנות, לשם כך אנו יכולים להשתמש גם ב- PySide וגם ב- PyQt, אך במדריך זה נשתמש ב- PySide מכיוון שמחבר המדריך הזה אוהב יותר את רישיון LGPL PySide. מאשר ה- GPL או PyQt Commercial.

ראשית ... מה זה פיתון?

על פי ויקיפדיה:

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

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

רק ש?

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

בנוסף למה שכבר הוזכר, Python מאפשר לנו (כמו רבים אחרים), לתכנת גם בסביבת האינטרנט וגם בשולחן העבודה באינטרנט, הוא גם חוצה פלטפורמות, נכון לעכשיו הוא תומך ב- Gnu / Linux, Windows, Mac osx, Android (אם אתה צריך להזכיר אותם לשינוי שלך).

מה זה QT?

QT היא מסגרת מרובת צורות, שפותחה במקור על ידי נוקיה, כדי למכור אותה מאוחר יותר ל- Digia, המשמשת לפיתוח אפליקציות, היא כתובה ב- C ++, אך ניתן להשתמש בשפות אחרות באמצעות Bindings (במקרה שלנו PySide או PyQt)

ההבדלים בין PySide ל- PyQt

בעיקר

  • רישיון, PySide מורשה על פי תנאי ה- LGPL ו- PyQT כפוף לתנאי ה- GPL או תחת רישיון מסחרי, לכן נצטרך לשלם במקרה של יצירת יישום סגור.
  • PySide נוצר על ידי נוקיה, ו- PyQt על ידי RiverBank.
  • PySide חוסך לנו את הטרחה בשימוש ב- STR בכל פעם שאנחנו משתמשים ב- QString של כל אחד מאובייקטים ה- QT.

אנו יכולים לפרט על השינויים המלאים של מי.

הכנה:

אנו מתקינים את Qt:

אם יש לנו דיסטרו עם Kde, עלינו כבר לקבל את מה שאנחנו צריכים, אם לא:

sudo apt-get להתקין qt4-dev-tools

אנו מתקינים את PySide:

sudo apt-get install pyside pyside-tools

יישום הפייתון + QT הראשון שלנו

אנו הולכים לעורך הטקסטים המועדף עלינו, אני ממליץ לך להתקין sublime-text2, אך אתה יכול להשתמש בזה שאתה מעדיף, ואנחנו מקלידים את הקוד הבא ונשמור אותו עם השם שאנחנו רוצים שיסיים תמיד בסיומת ".py" , אני אשמור בתור app1.py:

3

ראה קוד

אנו מריצים אותו מהקונסולה כך:

python app1.py

חלון זה אמור להופיע

2

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

עכשיו נסביר את הקוד:

from PySide.QtGui import *

from sys import exit, argv

כאן אנו מייבאים את המודולים הדרושים לביצוע PySide.

app = QApplication(argv)

אנו יוצרים את מופע ה- Qapplication עם אפליקציית השם.

window = Qwidget()

אנו יוצרים את המופע של QWidget ().

window.setWindowTitle("Primera App PySide")

אנו מבצעים את שיטת setWindowTitle, המקבלת מחרוזת כפרמטר כדי "להגדיר" את כותרת ה- Qwidget שלנו.

window.show()

אנו מראים את החלון שלנו

exit(app.exec_())

לבסוף אנו מבצעים את מחזור הביצוע האינסופי של ה- QApplication שלנו ().

תודה

תודה לאלה שעקבו אחריי לכאן והועילו. להדרכה הבאה אסביר כיצד לעצב את החלונות שלנו עם QT Designer ולייבא אותם לפרויקטים שלנו.

בנוסף, אני מוסיף את הקישור לפורום desde linux שבו יש לי ערכת נושא קטנה עם ספרייה קטנה של מדריכים ומדריכים של פיתון, המכילה מונחים שונים כולל:

מדריכי פייתון בסיסיים

wxPython

PyQt ו- PySide

ג'נגו

web2py

תכנות מדעי בפיתון.

ועוד רבים.

קישור לפורום

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


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

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

*

*

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

  1.   17. אמון דיג'ו

    תודה על הפוסט!

  2.   אנאוביס דיג'ו

    2 דברים:

    1. Qt לא פותחה במקור על ידי נוקיה, אלא על ידי Trolltech, שנרכשה מאוחר יותר על ידי נוקיה. האחרון מכר את Qt ל- Digia.
    2. התמונה בדוגמה הראשונה ליישום אינה תואמת את הקוד.

    תודה על ההדרכה, אני אעקוב אחריה 🙂

    1.    f3niX דיג'ו

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

    2.    f3niX דיג'ו

      אני לא יכול לשנות, אני משאיר את זה לעורך.

      ברכות.

      1.    neysonv דיג'ו

        שלח דוא"ל לעורך עם ההדרכה המתוקנת. אתה יכול לשלוח אותו לדוא"ל של @ nano שהוא אחד העורכים
        mailto: nano.world.contact@gmail.com
        אנא אל תעזוב את ההדרכה ככה
        דרישת שלום

  3.   ג'רמן דיג'ו

    דבר אחד מכה אותי: מדוע אתה משתמש ב"מיבוא * "בקוד שלך?

    ברכות!

    1.    f3niX דיג'ו

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

      ברכות.

      1.    ג'רמן דיג'ו

        אני מוצא את זה סוג של מבלבל. יתר על כן, זה לא מומלץ ב- PEP8:

        "יש להימנע מיבוא תווים כלליים (מייבוא ​​מודולים *), מכיוון שהם לא מבהירים אילו שמות קיימים במרחב השמות, מה שמבלבל את שני הקוראים ואת הכלים האוטומטיים רבים ..."

        1.    f3niX דיג'ו

          הדריכו אותי בעיקר קודים מקצועיים, כמו Ninja-Ide, אתה יכול לראות את הקוד כאן: https://github.com/ninja-ide/ninja-ide/blob/master/ninja_ide/core/ipc.pyזה נעשה גם ב- PyQt, אבל בכל דרך שהיא אין שום דבר שמאלץ אותך להשתמש בצורה זו או אחרת.

          כאן תוכלו לראות דיון בנושא StackOverflow, אודות זה:

          http://stackoverflow.com/questions/710551/import-module-or-from-module-import

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

          1.    f3niX דיג'ו

            בסדר מצטער שלא הבנתי אותך, אני יודע את זה, רק עשיתי את זה כי לא התכוונתי לתת הסבר על כל רכיב QApplication, QWidget, ואז להכליל אבל אתה צודק לחלוטין.

            תסלחו לאי ההבנה.

          2.    ג'רמן דיג'ו

            לא, לא הבנתם או לא שמתם לב ... זאת אומרת להשתמש ב- «מיבוא מודול *», כלומר, אני מתכוון ל"כוכבית "... באותו פוסט של StackOverflow הם מדברים על משהו אחר, אבל הם עדיין מדגישים את זה:

            "כל אחת מהשיטות מקובלת, אך אל תשתמש בייבוא ​​המודולים *."

            האם זה מובן עכשיו?

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

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

          4.    ג'רמן דיג'ו

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

            ברכות ותודה!

        2.    f3niX דיג'ו

          כאן אני עוזב את ה- Pep8, בספרדית ממליץ על השימוש ב- im
          זה מאוד לא מומלץ להשתמש בייבוא ​​יחסי לייבוא ​​קוד מחבילה. השתמש תמיד בנתיב המוחלט של החבילה לכל הייבוא. גם כעת לאחר ש- PEP 328 [7] מיושם במלואו ב- Python 2.5, השימוש ברכיב היבוא היחסי אינו מודאג ברצינות; יבוא מוחלט הוא נייד יותר ובדרך כלל קריא יותר.

          בעת ייבוא ​​כיתה ממודול, בדרך כלל נכון לעשות זאת
          מייקל לייבא את MyClass
          מ foo.bar.yourclass לייבא את YourClass

          לגבי

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

            קרא את זה: http://stackoverflow.com/questions/3615125/should-wildcard-import-be-avoided

            אלכס מרטלי (מפתח ליבה) ממליץ על משהו כזה:


            from PyQt4 import QtCore, QtGui

  4.   MSX דיג'ו

    רציתי עוד, למועד החלק השני!?
    ברכות 🙂

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

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

  6.   מטלטל דיג'ו

    הנה דוגמה לממשק מאפס (ללא שימוש ב- QtDesigner).

    https://github.com/xr09/metrocontador

    1.    f3niX דיג'ו

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

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

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

  7.   חוסה אלוי דיג'ו

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

  8.   בריאן רודריגס דיג'ו

    עקבתי אחר כל השלבים בדיוק כמו שאתה אומר, אבל כאשר אני מריץ את יישום app1.py במסוף זה אומר לי Traceback (השיחה האחרונה האחרונה):
    הקובץ "app1.py", שורה 1, ב
    מייבוא ​​PySide.QtGui *
    ImportError: אין מודול בשם PySide.QtGui. בשביל מה זה ?.

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

      הסיבה לכך היא שאתה משתמש בגרסת פיתון כמתורגמן המוגדר כברירת מחדל, אך אין לך את ה- pyside המותקן עבור גרסה זו.

      נסה להוסיף בתחילת הקובץ:
      #! usr / bin / python3
      אחרת
      #! usr / bin / python2

      אני ממליץ לך להשתמש ב- Eclipse עם pydev ולהגדיר היטב את המתורגמן.
      מתחם ברמה שני

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

        #! / usr / bin / python3
        אחרת
        #! / usr / bin / python2

        1.    f3niX דיג'ו

          PySide עדיין לא תואם ל- Python3, היזהר בזה, ושנית, הוא בודק את הייבוא ​​דרך קונסולת הפיתון האינטראקטיבית, כך שאתה יודע שהתקנת אותו או לא, הוא גם מתקין pip.

          1.    בריאן רודריגס דיג'ו

            כיצד אוכל לאמת זאת?

          2.    f3niX דיג'ו

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

            ברכות ומזל.

          3.    בריאן רודריגס דיג'ו

            תודה רבה, זה עזר לי מאוד.

          4.    מאוריסיו טובארס דיג'ו

            תראה חבר F3niX מצאתי את זה, נראה שעבור פיתון 3.3.2 בחלונות (וזה מה שיש לי עד השבוע הבא) יש להם בינאריות ל 32 ביט ו 64 ביט, ניסיתי את הדוגמה שלך וזה עובד עם פיתון 3.3.2 ו אני משתמש ב- PyScripter שמתקין סביבות שונות, אם אתה פותח את הפיתון 3 הוא מריץ את הסקריפטים כפייתון 3 ואם אתה פותח את ה -2.7 הוא מבצע אותם כ -2.7 וכן הלאה (באופן הגיוני אתה צריך להתקין את הגרסה הזו של פיתון ... זה מובן)

            http://qt-project.org/wiki/PySide_Binaries_Windows

            אני אשאיר אותך שם, רכילות, אולי זה ישרת מישהו אחר 😀

      2.    בריאן רודריגס דיג'ו

        אני מקבל את אותה שגיאה.

        1.    ג'רמן דיג'ו

          האם התקנת PySide?

          1.    בריאן רודריגס דיג'ו

            יש לי את זה מותקן.

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

          ונסה עם PyQT4 להתקין אותו ואז לשנות את שורות PySide עבור PyQT4 או PyQt4, ולתת לו לרוץ. ג'וג'ו. השתמש בליקוי החמה. מַזָל.

          1.    בריאן רודריגס דיג'ו

            איך אני עושה את זה?.

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

    תודה רבה לך !!! מחכה לפרק השני

    1.    f3niX דיג'ו

      ליום שישי הזה אני רשאי לפרסם את ברכותיו (באוניברסיטה יש לי מלא מלא).

  10.   מאוריציו טובארס דיג'ו

    חבר F3nIX אני מחכה להדרכה שלך מס '2, 3, 4 ... N hehehe

    כבר התקנתי את הלינוקס האלגנטית שלי עם המתנה של PySide והכל!

    בואו נראה מתי מעודדים אותו להראות מורה חדש 😀

    1.    f3niX דיג'ו

      סלח לי חבר, יש לי את זה בטיוטות אבל עבודה ולימודים לא נתנו לי זמן, אני מבטיח להוציא משהו החוצה השבוע.

      ברכה גדולה

  11.   דנטה דיג'ו

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

  12.   חורחה דיג'ו

    שלום, טוב מאוד, ההודעה שלך, יש לי שאלה, האם אוכל למכור את האפליקציה שלי עם פיסייד בלי שום בעיה?

    1.    f3niX דיג'ו

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

      בכל מקרה, אני לא מומחה לרישוי.

      ברכות.