Python + Qt # 1 ile İlk Adımlar

Bu eğitim, Python'u bir programlama dili olarak kullanarak QT çerçevesinin kullanımını öğretmeye odaklanmıştır, bunun için hem PySide hem de PyQt kullanabiliriz, ancak bu eğitimde PySide kullanacağız çünkü bu eğitimin yazarı LGPL PySide lisansını daha çok seviyor. GPL veya PyQt Commercial'dan daha fazla.

İlk olarak ... Python nedir?

Wikipedia'ya göre:

"Python, felsefesi çok temiz sözdizimini vurgulayan ve okunabilir kodu tercih eden çok yüksek seviyeli bir yorumlanmış programlama dilidir."

Python, çoklu-yayınlı bir programlama dilidir, bu nedenle farklı python programlama paradigmalarını destekler, örneğin şunları destekler: Nesne Yönelimli Programlama (OOP), Zorunlu Programlama (Yapılandırılmış) ve daha az ölçüde İşlevsel programlama.

Sadece bu?

Hayır, aynı zamanda dinamik bir yazım dilidir, yani python, programın yürütülmesi sırasında aynı değişkene farklı türde değerler atamamıza izin verir, bazıları bunu bir avantaj, diğerleri dezavantaj olarak görür, kendiniz görün .

Yukarıda belirtilenlere ek olarak, Python (diğerleri gibi) hem web ortamında hem de web masaüstünde programlama yapmamıza izin verir, aynı zamanda çapraz platformdur, şu anda Gnu / Linux, Windows, Mac osx, Android'i desteklemektedir ( değişikliğiniz için bunlardan bahsetmeniz gerekir).

QT nedir?

QT, başlangıçta Nokia tarafından geliştirilmiş, daha sonra uygulama geliştirme için kullanılan Digia'ya satılmak üzere çok platformlu bir çerçevedir, C ++ ile yazılmıştır, ancak Bağlamalar aracılığıyla diğer dillerde de kullanılabilir (bizim durumumuzda PySide veya PyQt)

PySide ve PyQt arasındaki farklar

Esasen

  • Lisans, PySide, LGPL koşulları kapsamında lisanslanmıştır ve PyQT, GPL koşulları veya ticari bir lisans kapsamındadır, bu nedenle kapalı bir uygulama oluşturmamız durumunda ödeme yapmamız gerekir.
  • PySide Nokia tarafından ve PyQt RiverBank tarafından oluşturulmuştur.
  • PySide, her bir QT nesnesinin QStringini her kullandığımızda STR kullanma zahmetinden kurtarır.

Tüm değişiklikleri detaylandırabiliriz Burada.

hazırlık:

Qt'yi kuruyoruz:

Kde ile bir dağıtımımız varsa, ihtiyacımız olana zaten sahip olmalıyız, eğer yoksa:

sudo apt-get install qt4-dev-araçları

PySide'ı kuruyoruz:

sudo apt-get install pyside pyside-tools

İlk Python + QT Uygulamamız

Favori metin düzenleyicimize gidiyoruz, sublime-text2 kurmanızı tavsiye ederim, ancak tercih ettiğinizi kullanabilirsiniz ve aşağıdaki kodu yazıp her zaman ".py" uzantısıyla bitmesini istediğimiz adla kaydediyoruz. , App1.py olarak kaydedeceğim:

3

Kodu Gör

Bunu konsoldan şu şekilde çalıştırıyoruz:

python app1.py

Bu pencere görünmeli

2

Ne? Sadece bu, çünkü daha önce sadece bir konsolunuz olsaydı, neden şikayet ediyorsunuz? Ne bekliyordun, Erp mi? Hadi adamım bir şey başlıyor.

Şimdi kodu açıklayalım:

from PySide.QtGui import *

from sys import exit, argv

Burada PySide yürütmesi için gerekli modülleri içe aktarıyoruz.

app = QApplication(argv)

Qapplication örneğini name app ile oluşturuyoruz.

window = Qwidget()

QWidget () örneğini oluşturuyoruz.

window.setWindowTitle("Primera App PySide")

Qwidget'imizin başlığını "ayarlamak" için parametre olarak bir String alan setWindowTitle yöntemini çalıştırıyoruz.

window.show()

Penceremizi gösteririz

exit(app.exec_())

son olarak QApplication () programımızın sonsuz yürütme döngüsünü çalıştırıyoruz.

teşekkürler

Beni burada takip eden ve yararlı olanlara teşekkür ederim. Bir sonraki eğitimde, pencerelerimizi QT Designer ile nasıl tasarlayacağımızı ve bunları projelerimize nasıl aktaracağımızı açıklayacağım.

Ayrıca forumun linkini de ekliyorum. desde linux burada aşağıdakiler de dahil olmak üzere farklı terimler içeren küçük bir python eğitimleri ve kılavuzları kütüphanesine sahip küçük bir temam var:

Temel Python Öğreticileri

wxPython

PyQt ve PySide

Django

web2py

Python'da bilimsel programlama.

Ve daha fazlası.

FORUM'A BAĞLANTI

Umarım size hizmet ederler, hoşçakal diyorum, bu harika topluluğa ait olmak her zamanki gibi bir zevktir.


Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: Miguel Ángel Gatón
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.

  1.   @gizem dijo

    Gönderi için teşekkürler!

  2.   annubis dijo

    2 şey:

    1. Qt orijinal olarak Nokia tarafından değil, daha sonra Nokia tarafından satın alınan Trolltech tarafından geliştirildi. İkincisi daha sonra Qt'yi Digia'ya sattı.
    2. İlk uygulama örneğindeki görüntü, kodla eşleşmiyor.

    Eğitim için teşekkürler, takip edeceğim 🙂

    1.    f3niX dijo

      Kesinlikle haklısın, kaçırdım. Ve senin de haklı olduğun ikinci şey, onu daha kolay hale getirmek ve sınıfı kullanmamak için değiştirdim ve değişikliği, başlangıç ​​hatalarını kaçırdım. Bazı editörlerin onaylaması için düzeltmeleri geçtim.

    2.    f3niX dijo

      Değiştiremem, bir editöre bırakıyorum.

      Selamlar.

      1.    Neysonv dijo

        Düzeltilmiş öğretici ile bir editöre e-posta gönderin. editörlerden biri olan @ nano'nun e-postasına gönderebilirsiniz
        mailto: nano.world.contact@gmail.com
        lütfen öğreticiyi böyle bırakmayın
        Saygılarımızla

  3.   Germán dijo

    Dikkatimi çeken bir şey var: kodunuzda neden "içe aktarmadan *" kullanıyorsunuz?

    Selamlar!

    1.    f3niX dijo

      İçe aktarmanın doğru yolu budur, bu şekilde içe aktarırken modülün hangi sınıfını içe aktarmak istediğinizi söylersiniz ve tüm modülü çağırmazsınız.

      Selamlar.

      1.    Germán dijo

        Bu tür kafa karıştırıcı buluyorum. Ayrıca, PEP8'de tavsiye edilmez:

        "Joker karakter içe aktarmalarından (modül içe aktarımından *) kaçınılmalıdır, çünkü ad alanında hangi adların mevcut olduğunu belirsizleştirirler, hem okuyucular hem de birçok otomatik araç kafasını karıştırır ..."

        1.    f3niX dijo

          Ninja-Ide gibi çoğunlukla profesyonel kodlar tarafından yönlendirildim, kodu burada görebilirsiniz: https://github.com/ninja-ide/ninja-ide/blob/master/ninja_ide/core/ipc.pyPyQt'da da yapılır, ancak herhangi bir biçimde sizi bir formu veya diğerini kullanmaya zorlayan hiçbir şey yoktur.

          Burada StackOverflow'da bununla ilgili bir tartışma görebilirsiniz:

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

          Orada stillerin her birinin artılarını ve eksilerini belirtiyorlar.

          1.    f3niX dijo

            ok üzgünüm seni anlamadım, biliyorum, bunu sadece QApplication, QWidget öğelerinin her biri için bir açıklama yapmayacağım için yaptım, sonra genelleme yapacağım ama kesinlikle haklısın.

            Yanlış anlaşılmayı affedin.

          2.    Germán dijo

            Hayır, anlamadınız ya da dikkat etmediniz ... "modül içe aktarmadan *" kullanmaktan bahsediyorum, yani, o StackOverflow gönderisinde "yıldız işareti" ... başka bir şeyden bahsediyorlar, ama yine de vurguluyorlar:

            "Her iki yöntem de kabul edilebilir, ancak modül içe aktarımından * kullanmayın."

            Şimdi anlaşıldı mı?

          3.    felipe dijo

            Almanca haklı. Tüm içeriği asterikle içe aktarırsanız, bu içe aktarma modülü için modülden içe aktarmanın ne faydası var? Slds sadece güzel yazı.

          4.    Germán dijo

            Ahh peki, şimdi anlıyorum… her neyse, beni fazla uzun sürmesin, ben de Python'da acemiyim. Bloguma uğrarsanız, PyGObject kullanarak Gtk + 3 ile sizinkine benzer bir gönderi yaptığımı göreceksiniz.

            Selamlar ve teşekkürler!

        2.    f3niX dijo

          Burada Pep8'i bırakıyorum, İspanyolca'da im kullanımını tavsiye ediyorum
          Bir paketten kod içe aktarmak için göreli içe aktarmaların kullanılması kesinlikle tavsiye edilmez. Tüm içe aktarmalar için her zaman mutlak paket yolunu kullanın. PEP 328 [7] Python 2.5'te tamamen uygulandığına göre, göreceli içe aktarımların kullanılması ciddi şekilde tavsiye edilmiyor; mutlak içe aktarmalar daha taşınabilir ve genellikle daha okunabilirdir.

          Bir modülden bir sınıfı içe aktardığınızda, bunu yapmak genellikle doğrudur
          Sınıfımdan Sınıfımı içe aktar
          foo.bar.yourclass'tan YourClass'ı içe aktarın

          selamlar

          1.    dhunter dijo

            Oku bunu: http://stackoverflow.com/questions/3615125/should-wildcard-import-be-avoided

            Alex Martelli (çekirdek py geliştiricisi) şuna benzer bir şey önermektedir:


            from PyQt4 import QtCore, QtGui

  4.   msx dijo

    2. bölüm ne zaman için daha fazlasını istiyordum!?
    Selamlar 🙂

  5.   eliotime3000 dijo

    Çok iyi öğreticiler, ayrıca programlamak daha rahat olabilir.

  6.   dhunter dijo

    İşte sıfırdan bir arayüz örneği (QtDesigner kullanmadan).

    https://github.com/xr09/metrocontador

    1.    f3niX dijo

      Dhunter uygulaması mükemmel, burada bizden elektrik için ne kadar ücret aldıklarını bile bilmiyoruz, haha ​​selamlar.

      1.    dhunter dijo

        Teşekkürler, kişisel kullanım için yapılan ve başkalarına hizmet eden uygulamalardan biri. Burada Küba'da makbuz oranla ayrıntılı olarak belirtilmiştir, algoritmayı kopyalamak kolaydır.

  7.   Jose Eloy dijo

    Bu kurstan çok haberdar olacağım. Uzun zamandır çapraz platform uygulamalarıyla ilgileniyorum ve Python + QT / Pyside kombinasyonunun harika bir seçenek olduğunu düşünüyorum. Girişim için selamlar ve tebrikler

  8.   Bryan Rodriguez dijo

    Tüm adımları aynen söylediğiniz gibi takip ettim ama terminalde app1.py uygulamasını çalıştırdığımda bana Traceback (en son çağrı son) diyor:
    "App1.py" dosyası, satır 1, içinde
    PySide.QtGui'den içe aktarma *
    ImportError: PySide.QtGui adlı modül yok. Bu ne için?

    1.    felipe dijo

      bunun nedeni, varsayılan yorumlayıcı olarak python'un bir sürümünü kullanmanız, ancak bu sürüm için yüklü pyside'iniz olmamasıdır.

      Dosyanın başına eklemeyi deneyin:
      #! usr / bin / python3
      ya da başka
      #! usr / bin / python2

      Eclipse'i pydev ile kullanmanızı ve yorumlayıcıyı iyi yapılandırmanızı öneririm.
      SLD'ler

      1.    felipe dijo

        #! / usr / bin / python3
        ya da başka
        #! / usr / bin / python2

        1.    f3niX dijo

          PySide henüz Python3 ile uyumlu değildir, buna dikkat edin ve ikinci olarak, etkileşimli python konsolu aracılığıyla içe aktarmaları kontrol eder, böylece onu kurup kurmadığınızı bilirsiniz, ayrıca pip yükler.

          1.    Bryan Rodriguez dijo

            Nasıl doğrularım?

          2.    f3niX dijo

            Bir konsolda "Python" kullanın, her neyse, aşağıda yazıda bıraktığım kitaplığa girmenizi ve "herkes için python" u indirmenizi öneririm, daha fazla tabana ihtiyacınız var.

            Selamlar ve şans.

          3.    Bryan Rodriguez dijo

            Çok teşekkür ederim, bana çok yardımcı oldu.

          4.    Mauricio Tobares dijo

            arkadaşa bak F3niX Bunu buldum, görünen o ki, pencerelerde (önümüzdeki haftaya kadar sahip olduğum şey olan) python 3.3.2 için 32 bit ve 64 bitlik ikili dosyalar var, örneğinizi denedim ve python 3.3.2 ile çalışıyor ve Farklı ortamlar kuran PyScripter kullanıyorum, python 3'ü açarsanız betikleri python 3 olarak çalıştırır ve 2.7'yi açarsanız bunları 2.7 olarak çalıştırır vb. anlaşıldı)

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

            Seni orada bırakacağım dedikodu, belki başkasına hizmet eder 😀

      2.    Bryan Rodriguez dijo

        Ben de aynı hatayı alıyorum.

        1.    Germán dijo

          PySide kurulu mu?

          1.    Bryan Rodriguez dijo

            Yükledim.

        2.    felipe dijo

          Ve PyQT4 ile yüklemeyi deneyin ve ardından PyQT4 veya PyQt4 için PySide satırlarını değiştirin ve çalıştırın. jojo. Tutulmayı kullanın. Şans.

          1.    Bryan Rodriguez dijo

            Bunu nasıl yaparım?.

  9.   Karlinux dijo

    Çok teşekkür ederim !!! İkinci bölümü bekliyorum

    1.    f3niX dijo

      Bu Cuma günü selamlar yayınlayabilirim (Üniversite biraz dolu).

  10.   Mauricio Tobares dijo

    Arkadaş F3nIX öğreticinizi bekliyorum N ° 2, 3, 4… N hehehe

    PySide bekleme ve her şeyle birlikte çok zarif linux'umu zaten kurdum!

    Bakalım yeni bir öğretmen göstermeye ne zaman teşvik ediliyor?

    1.    f3niX dijo

      Affedersiniz dostum, taslak halindeyim ama iş ve çalışmalar bana zaman vermedi, bu hafta bir şeyler çıkarmaya söz veriyorum.

      Büyük bir selam

  11.   Dante dijo

    Merhaba, uzun zamandır Python öğrenmekle ilgileniyorum ama bazı şüphelerim var. İstediğim, çalıştığım aile şirketinin bilgi sürecini biraz iyileştirecek bir uygulama yapmak, başta pencereler olmak üzere pencereler için bir şeyler yapmak istiyorum, hepsi tek bir bilgisayarda çalışacak ve sonra da İnternet üzerinden birkaç bilgisayarın bağlanacağı veri tabanına bağlanabilir. Uygulamayı GUIing açısından çok fazla çeşitlilik var ve bu beni başım döndürüyor. Modern ve çekici bir görünüm vermek için ne önerirsiniz? Ayrıca bazı istatistiksel grafikler yapıp raporlar yazdırırdım, bunun için ne kullanabilirim? Şerefe

  12.   jorge dijo

    Merhaba, çok güzel gönderiniz, bir sorum var, pyside ile yapılan uygulamamı sorunsuz bir şekilde satabilir miyim?

    1.    f3niX dijo

      Eh, lisanslar her zaman çılgınca olur, ancak özgür yazılım lisansları aynı zamanda yazılım satmanıza da izin verir; ne olur, LGPL'nin sizi böyle yapmaya zorlamayan LGPL'den farklı olarak GPL sizi kodu dağıtmaya zorlar.

      Her durumda, lisanslama konusunda uzman değilim.

      Selamlar.