Първи стъпки с Python + Qt # 1

Този урок е фокусиран върху преподаването на използването на QT рамката, използвайки Python като език за програмиране, за това можем да използваме както PySide, така и PyQt, но в този урок ще използваме PySide, тъй като авторът на този урок харесва LGPL PySide лиценза по-добре. отколкото GPL или PyQt Commercial.

Първо ... Какво е Python?

Според Уикипедия:

„Python е интерпретиран език за програмиране на много високо ниво, чиято философия набляга на много изчистен синтаксис и благоприятства четимия код.“

Python е език за програмиране с много парадигми, така че поддържа различни парадигми за програмиране на python, например поддържа: Обектно ориентирано програмиране (OOP), Императивно програмиране (Структурирано) и в по-малка степен Функционално програмиране.

Само че?

Не, това е и динамичен език за писане, което означава, че 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 инсталирайте 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 с приложението за име.

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.    neysonv каза той

        Изпратете имейл на редактор с коригирания урок. можете да го изпратите на имейла на @nano, който е един от редакторите
        mailto: nano.world.contact@gmail.com
        моля, не оставяйте урока по този начин
        отношение на

  3.   Germán каза той

    Едно нещо ми прави впечатление: защо използвате "от import *" във вашия код?

    Поздрави!

    1.    f3niX каза той

      Това е правилният начин за импортиране, когато импортирате по този начин, вие му кажете какъв конкретен клас на модула искате да импортирате и не извиквате целия модул.

      Поздрави.

      1.    Germán каза той

        Намирам това за объркващо. Освен това не се препоръчва в 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.    Germán каза той

            Не, не разбрахте или не обърнахте внимание ... Искам да кажа, използвайки «от модул за импортиране *», тоест имам предвид «звездичка» ... в онзи пост на StackOverflow те говорят за нещо друго, но все пак го подчертават:

            „И двата метода са приемливи, но не използвайте от импортиране на модул *.“

            Разбра ли се сега?

          3.    Фелипе каза той

            Немският е прав. Каква е ползата от from import import, ако импортирате цялото съдържание със звездичка, за този модул за импортиране. Slds също толкова хубав пост.

          4.    Germán каза той

            А, добре, сега разбирам ... така или иначе, не ми отнемайте твърде много, аз също съм начинаещ в 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 и да конфигурирате добре интерпретатора.
      slds

      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 на windows (което имам до следващата седмица) те имат двоични файлове за 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.    Germán каза той

          Имате ли инсталиран PySide?

          1.    Брайън Родригес каза той

            Инсталирах го.

        2.    Фелипе каза той

          И опитайте PyQT4, инсталирайте го и след това променете линиите PySide на PyQT4 или PyQt4 и го пуснете. Джоджо. Използвайте затъмнението. Късмет.

          1.    Брайън Родригес каза той

            Как да направя това?.

  9.   karlinux каза той

    Благодаря ти много !!! В очакване на втората глава

    1.    f3niX каза той

      За този петък мога да го публикувам (Университетът има малко пълни поздрави).

  10.   МаурисиоТобарес каза той

    Приятел F3nIX Очаквам твоя урок N ° 2, 3, 4 ... N хехехе

    Вече имам инсталиран моя много елегантен Linux с изчакване на PySide и всичко останало!

    Нека видим кога ще бъде насърчен да покаже нов учител 😀

    1.    f3niX каза той

      Извинете приятелю, имам го в чернови, но работата и ученето не ми дадоха време, обещавам да извадя нещо тази седмица.

      Голям поздрав

  11.   Данте каза той

    Здравейте, отдавна се интересувам от изучаването на Python, но имам някои съмнения. Това, което искам, е да направя приложение, за да подобря малко информационния процес на семейния бизнес, в който работя, бих искал да направя нещо за прозорци, с прозорци отначало, всичко ще работи на един компютър и след това да може да се свърже чрез интернет към базата данни, към която ще се свържат няколко компютъра. Има много разнообразие по отношение на GUI на приложението и това ме замайва. Какво препоръчвате, за да му придадете модерен и привлекателен вид? Също така бих направил някои статистически графики и отпечатвал отчети, какво мога да използвам за това? Наздраве

  12.   Хорхе каза той

    Здравейте, много добре за вашия пост, имам въпрос. Мога ли да продам приложението си, направено с pyside, без никакъв проблем?

    1.    f3niX каза той

      Е, лицензите винаги са луди, но лицензите за безплатен софтуер също ви позволяват да продавате софтуер, а това, което се случва, е, че GPL ви принуждава да разпространявате кода за разлика от LGPL, който не ви принуждава да го правите.

      Във всеки случай не съм експерт по лицензиране.

      Поздрави.