Перші кроки з Python + Qt # 1

Цей підручник зосереджений на навчанні використання фреймворку QT з використанням Python як мови програмування, для цього ми можемо використовувати як PySide, так і PyQt, але в цьому підручнику ми будемо використовувати PySide, оскільки автору цього посібника більше подобається ліцензія LGPL PySide. ніж GPL або PyQt Commercial.

По-перше ... Що таке Python?

За даними Вікіпедії:

"Python - це інтерпретована мова програмування на високому рівні, філософія якої наголошує на дуже чистому синтаксисі та сприяє читанню коду".

Python - це мова програмування з декількома парадигмами, тому вона підтримує різні парадигми програмування на python, наприклад, вона підтримує: об’єктно-орієнтоване програмування (ООП), імперативне програмування (структуроване) та меншою мірою функціональне програмування.

Тільки що?

Ні, це також мова динамічного набору тексту, що означає, що python дозволяє нам призначати різні типи значень одній і тій же змінній під час виконання програми, одні вважають це перевагою, інші недоліком, переконайтеся самі .

На додаток до вищезазначеного, Python дозволяє нам (як і багатьом іншим) програмувати як у веб-середовищі, так і на веб-робочому столі, він також є крос-платформним, наразі він підтримує Gnu / Linux, Windows, Mac osx, Android (якщо ви потрібно згадати їх для вашої модифікації).

Що таке QT?

QT - це багатоплатформна структура, спочатку розроблена Nokia, яка згодом буде продана Digia, яка використовується для розробки додатків, вона написана на C ++, але може використовуватися іншими мовами через Bindings (у нашому випадку PySide або PyQt )

Відмінності між PySide та PyQt

Головним чином

  • Ліцензія, PySide ліцензована за умовами LGPL, а PyQT - за умовами GPL або за комерційною ліцензією, тому нам доведеться заплатити у разі створення закритої програми.
  • PySide створений Nokia, а PyQt - RiverBank.
  • PySide позбавляє нас від проблем використання STR кожного разу, коли ми використовуємо QString кожного з об'єктів QT.

Ми можемо детально описати повні зміни Тут.

Приготування:

Встановлюємо Qt:

Якщо у нас є дистрибутив з Kde, ми вже маємо те, що нам потрібно, якщо ні:

sudo apt-get install qt4-dev-tools

Встановлюємо PySide:

sudo apt-get install pyside pyside-tools

Наш перший додаток Python + QT

Ми переходимо до нашого улюбленого текстового редактора, я рекомендую вам встановити sublime-text2, але ви можете використовувати той, який вам більше подобається, і ми вводимо наступний код і зберігаємо його з іменем, яке ми хочемо завжди закінчувати розширенням ".py" , Я збережу як app1.py:

3

Див. Код

Ми запускаємо його з консолі так:

python app1.py

Це вікно має з’явитися

2

Що? Тільки це, бо якщо у вас була лише консоль раніше, на що ви скаржитесь? Що ти очікував, Erp? давай людині, бо щось починається.

Тепер пояснимо код:

from PySide.QtGui import *

from sys import exit, argv

Тут ми імпортуємо необхідні модулі для виконання PySide.

app = QApplication(argv)

Ми створюємо екземпляр Qapplication з іменем app.

window = Qwidget()

Ми створюємо екземпляр QWidget ().

window.setWindowTitle("Primera App PySide")

Ми виконуємо метод setWindowTitle, який отримує String як параметр для "встановлення" заголовка нашого Qwidget.

window.show()

Ми показуємо своє вікно

exit(app.exec_())

нарешті, ми виконуємо нескінченний цикл виконання нашої програми QApplication ().

Грекіас

Дякую за тих, хто пішов за мною тут і був корисним. Для наступного підручника я поясню, як розробляти наші вікна за допомогою QT Designer та імпортувати їх у наші проекти.

Додатково додаю посилання на форум desde linux де у мене є невелика тема з невеликою бібліотекою підручників і посібників з python, що містить різні терміни, зокрема:

Основні підручники з Python

wxPython

PyQt та PySide

Django

web2py

Наукове програмування на python.

Та багато іншого.

ПОСИЛАННЯ НА ФОРУМ

Сподіваюся, вони вам служать, прощаюся, як завжди приємно належати до цієї чудової спільноти.


Залиште свій коментар

Ваша електронна адреса не буде опублікований. Обов'язкові для заповнення поля позначені *

*

*

  1. Відповідальний за дані: Мігель Анхель Гатон
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.

  1.   @ trust17 - сказав він

    Дякую за допис!

  2.   Аннубіс - сказав він

    2 речі:

    1. Спочатку Qt розроблялася не Nokia, а Trolltech, яку згодом придбала Nokia. Потім останні продали Qt Digia.
    2. Зображення у першому прикладі програми не відповідає коду.

    Дякую за підручник, я буду його виконувати 🙂

    1.    f3niX - сказав він

      Ви абсолютно праві, я пропустив це. І друге, що ви також маєте рацію, це те, що я змінив його, щоб полегшити і не використовувати клас, і я пропустив модифікацію, початкові помилки. Я вже передаю виправлення якомусь редактору, щоб схвалити їх.

    2.    f3niX - сказав він

      Я не можу змінити, я залишаю це якомусь редактору.

      Привіт.

      1.    нейсонв - сказав він

        Надішліть редактору електронний лист із виправленим підручником. Ви можете надіслати його на електронну адресу @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.    Герман - сказав він

            Ах, добре, тепер я розумію ... у будь-якому випадку, не забирай мене занадто довго, я також новачок у Python. Якщо ви переглянете мій блог, то побачите, що я зробив допис, схожий на ваш, але з Gtk + 3 за допомогою PyGObject.

            Вітаю та дякую!

        2.    f3niX - сказав він

          Тут я залишаю Pep8, іспанською мовою, що рекомендує використовувати im
          Вкрай недоцільно використовувати відносний імпорт для імпорту коду з пакета. Завжди використовуйте абсолютний шлях пакету для всього імпорту. Навіть зараз, коли PEP 328 [7] повністю реалізований в Python 2.5, використання відносного імпорту серйозно не рекомендується; абсолютний імпорт є більш портативним і, як правило, більш читабельним.

          Коли ви імпортуєте клас із модуля, зазвичай це правильно робити
          з myclass імпортувати MyClass
          з foo.bar.yourclass імпортуйте YourClass

          привіт

          1.    dhunter - сказав він

            Прочитай це: http://stackoverflow.com/questions/3615125/should-wildcard-import-be-avoided

            Алекс Мартеллі (розробник основного py) рекомендує щось подібне:


            from PyQt4 import QtCore, QtGui

  4.   MSX - сказав він

    Я хотів більше, коли ж 2 частина!?
    Вітаю 🙂

  5.   eliotime3000 - сказав він

    Дуже хороші підручники, плюс це може бути зручнішим для програмування.

  6.   dhunter - сказав він

    Ось приклад інтерфейсу з нуля (без використання QtDesigner).

    https://github.com/xr09/metrocontador

    1.    f3niX - сказав він

      Додаток dhunter чудовий, тут ми навіть не знаємо, скільки нам беруть за електроенергію, ха-ха привіт.

      1.    dhunter - сказав він

        Дякую, це один із тих додатків, який один робить для особистого користування та обслуговує інших. Тут на Кубі квитанція розбита на тарифи, копіювати алгоритм легко.

  7.   Хосе Елой - сказав він

    Я буду дуже обізнаний про цей курс. Я давно зацікавлений у створенні міжплатформенних додатків, і я вважаю, що комбінація Python + QT / Pyside - чудовий варіант. Привітання та вітання з ініціативою

  8.   Брайан Родрігес - сказав він

    Я дотримувався всіх кроків точно так, як ви говорите, але коли я запускаю додаток app1.py у терміналі, він повідомляє мені Traceback (останній дзвінок останній):
    Файл "app1.py", рядок 1, в
    з імпорту PySide.QtGui *
    ImportError: Немає модуля з іменем PySide.QtGui. Для чого це ?.

    1.    Феліпе - сказав він

      це тому, що ви використовуєте версію python як інтерпретатор за замовчуванням, але у вас не встановлено pyside для цієї версії.

      Спробуйте додати на початку файлу:
      #! usr / bin / python3
      інакше
      #! usr / bin / python2

      Я рекомендую вам використовувати Eclipse з pydev і добре налаштувати інтерпретатор.
      СЛД

      1.    Феліпе - сказав він

        #! / usr / bin / python3
        інакше
        #! / usr / bin / python2

        1.    f3niX - сказав він

          PySide ще не сумісний з Python3, будьте обережні з цим, а по-друге, він перевіряє імпорт через інтерактивну консоль python, так що ви знаєте, встановлено його чи ні, він також встановлює pip.

          1.    Брайан Родрігес - сказав він

            Як мені це перевірити?

          2.    f3niX - сказав він

            У консолі використовуйте "Python", у будь-якому випадку я рекомендую вам увійти до бібліотеки, яку я залишив нижче, у дописі, і завантажити "python для всіх", вам потрібна додаткова база.

            Привіт і удача.

          3.    Брайан Родрігес - сказав він

            Щиро дякую, це мені дуже допомогло.

          4.    Маурісіо Тобарес - сказав він

            подивіться друже F3niX Я знайшов це, здається, що для python 3.3.2 на вікнах (що я маю до наступного тижня) у них є двійкові файли на 32 біти та 64 біти, я спробував ваш приклад, і він працює з python 3.3.2 і Я використовую PyScripter, який встановлює різні середовища, якщо ви відкриваєте python 3, він запускає сценарії як python 3, а якщо ви відкриваєте 2.7, він виконує їх як 2.7 і так далі (логічно ви повинні встановити цю версію python ... це зрозуміло)

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

            Я залишу вас там, плітки, можливо, це послужить комусь іншому 😀

      2.    Брайан Родрігес - сказав він

        Я отримую ту ж помилку.

        1.    Герман - сказав він

          У вас встановлений PySide?

          1.    Брайан Родрігес - сказав він

            Я його встановив.

        2.    Феліпе - сказав він

          І спробуйте PyQT4, встановіть його, а потім змініть рядки PySide на PyQT4 або PyQt4 і запустіть. жоджо. Використовуйте затемнення. Удача.

          1.    Брайан Родрігес - сказав він

            Як це зробити ?.

  9.   karlinux - сказав він

    Дуже дякую !!! Чекаючи другого розділу

    1.    f3niX - сказав він

      У цю п’ятницю я можу опублікувати його (В університеті мене трохи наповнили) привітання.

  10.   Мауріціо Тобарес - сказав він

    Друг F3nIX Я чекаю на твій підручник № 2, 3, 4… Н-хе-хе

    У мене вже встановлений дуже елегантний Linux з PySide, який чекає, і все!

    Давайте подивимося, коли йому запропонують показати нового репетитора 😀

    1.    f3niX - сказав він

      Пробачте, друже, у мене це в чернетках, але робота та навчання не дають мені часу, я обіцяю щось вивести цього тижня.

      Велике привітання

  11.   Данте - сказав він

    Привіт, я вже давно зацікавлений у вивченні Python, але маю певні сумніви. Що я хочу, це зробити заявку, щоб трохи вдосконалити інформаційний процес сімейного бізнесу, де я працюю, я хотів би зробити щось для вікон, спочатку з вікнами, все це працювало б на одному ПК, а потім, що він може бути підключеним через Інтернет до бази даних, до якої буде підключено пару комп’ютерів. Існує багато різноманітності з точки зору графічного інтерфейсу програми, і це викликає у мене запаморочення. Що ви рекомендуєте надати йому сучасний та привабливий вигляд? Я б також зробив статистичну графіку та надрукував звіти, що для цього я можу використати? На ура

  12.   Хорхе - сказав він

    Привіт, дуже хороший ваш допис, у мене питання, чи можу я без проблем продати свій додаток, виготовлений за допомогою pyside?

    1.    f3niX - сказав він

      Ну, ліцензії завжди божевільні, але ліцензії на безкоштовне програмне забезпечення також дозволяють вам продавати програмне забезпечення, але GPL змушує вас розповсюджувати код, на відміну від LGPL, який не змушує вас це робити.

      У будь-якому випадку, я не фахівець з питань ліцензування.

      Привіт.