PyQt[3], bir Python eklentisi olarak uygulanan, platformlar arası GUI araç seti Qt'nin bir Python bağlantısıdır.

Pyqt
Python and Qt.svg
Screenshot-qt-designer-qwebview.png
Geliştirici(ler) Riverbank Computing
Güncel sürüm 5.15.4 / 10 Mart 2021 (8 ay önce) (2021-03-10)[1]
Programlama dili C++ / Python[2]
İşletim sistemi Cross-platform
Resmî sitesi riverbankcomputing.com

PyQt, İngiliz Riverbank Computing[4] firması tarafından geliştirilmiş ücretsiz bir yazılımdır.

4.5'ten daha eski Qt sürümlerine benzer koşullar altında mevcuttur; bu, GNU Genel Kamu Lisansı (GPL) ve ticari lisans dahil olmak üzere çeşitli lisanslar anlamına gelmektedir. Ancak GNU Kısıtlı Genel Kamu Lisansı (LGPL) değildir.

PyQt, Microsoft Windows'u, Linux'ı ve MacOS (veya Darwin) dahil olmak üzere çeşitli UNIX çeşitlerini desteklemektedir.

PyQt, yaklaşık 440 sınıftan oluşmaktadır. Ayrıca, aşağıdakiler dahil 6.000'den fazla işlev ve yöntem uygulamaktadır:

  • Önemli bir GUI widget setidir.
  • SQL veri tabanlarına erişim sınıflarına sahiptir (ODBC, MySQL, PostgreSQL, Oracle, SQLite)
  • QScintilla, Scintilla tabanlı zengin metin düzenleyici gerecidir.
  • Bir veri tabanından otomatik olarak doldurulan verilere duyarlı pencere öğeleridir.
  • XML ayrıştırıcıdır.
  • SVG desteği sağlamaktadır
  • Windows'a ActiveX denetimlerini katmak için sınıflar sunmaktadır (yalnızca ticari sürümde)[5]

Bu bağlamaları otomatik olarak oluşturmak için Phil Thompson, diğer projelerde de kullanılan SIP aracını geliştirmiştir.

Ağustos 2009'da, Qt araç kitinin o zamanki sahibi olan Nokia, benzer işlevsellik sağlayan PySide'ı piyasaya sürmüştür. Ancak, LGPL uyarınca, Riverbank Computing ile lisans koşullarını alternatif bir lisans olarak LGPL'yi içerecek şekilde değiştirmek için bir anlaşmaya varamamıştır.

PyQt simge

PyQt ana bileşenleriDüzenle

PyQt4 aşağıdaki Python modüllerini içermektedir:

  • QtCore modülü temel GUI olmayan sınıfları içermektedir. Ayrıca, QtCore modülü, olay döngüsünü (event loop) ve Qt'nin signal-slot[6] mekanizmasını içermektedir. Ayrıca, Unicode için platformdan bağımsız soyutlamalar, iş parçacıkları, eşlenmiş dosyalar, paylaşılan bellek, normal ifadeler ve kullanıcı ve uygulama ayarları içeriyordur.
  • QtGui modülü, GUI sınıflarının çoğunu içermektedir. Bunlar, model–view–controller(model–view–controller) tasarım modeline dayalı bir table, tree ve list sınıflarını içermektedir.
  • QtNetwork modülü, UDP ve TCP istemcileri ve sunucuları yazmak için sınıflar içermektedir. FTP ve HTTP istemcilerini uygulayan ve DNS aramalarını destekleyen sınıfları içermektedir. Ağ olayları, olay döngüsüyle bütünleştirilerek ağa bağlı uygulamaların geliştirilmesini çok kolaylaştırmaktadır.
  • QtOpenGL modülü, PyQt uygulamalarında 3B grafiklerin işlenmesinde OpenGL'nin kullanılmasını sağlayan sınıfları içermektedir.
  • QtSql modülü, açık kaynaklı ve tescilli SQL veritabanları ile entegre olan sınıfları içermektedir.GUI sınıflarıyla kullanılabilen veritabanı tabloları için düzenlenebilir veri modelleri içermektedir.Ayrıca bir SQLite uygulamasını da içermektedir.
  • QtSvg modülü, SVG dosyalarının içeriğini görüntülemek için sınıflar içermektedir. SVG 1.2 Tiny'nin statik özelliklerini desteklemektedir.
  • QtXml modülü, Qt'nin XML ayrıştırıcısına SAX ve DOM arayüzlerini uygulamaktadır.
  • QtMultimedia modülü, düşük seviyeli multimedya işlevselliğini uygulamaktadır. Ayrıca, uygulama geliştiricileri normalde fonon modülünü kullanır.
  • QtDesigner modülü, Qt Designer'ın PyQt kullanılarak genişletilmesine izin veren sınıfları içermektedir.
  • Qt modülü, yukarıda açıklanan tüm modüllerde bulunan sınıfları tek bir modülde birleştirmektedir. Bu, hangi temel modülün belirli bir sınıfı içerdiği konusunda endişelenmenize gerek olmaması avantajına sahiptir. Dezavantajı, Qt framwork'ünün tamamını yüklemesi yani bir uygulamanın bellek miktarını artırmasıdır. Bu birleştirilmiş modülü veya tek tek bileşen modüllerini kullanmak kişisel zevkinize bağlıdır.
  • Uic modülü, Qt Designer tarafından oluşturulan ve bir grafik kullanıcı ara yüzünün tamamını veya bir kısmını açıklayan XML dosyalarının işlenmesi için destek uygulamaktadır[7].

PyQt5 aşağıdaki Python modüllerini içermektedir:

  • QtQml Modül
  • QtQtuick Modül
  • QtCore Modül
  • QtGui Modül
  • QtPrintSupport Modül
  • QtWidgets Modül
  • QGLContext Modül
  • QGLFormat Modül
  • QGLWidget Modül
  • QtWebKit Modül
  • QtWebKitWidgets Modül

VersiyonlarDüzenle

PyQt sürüm 4, hem Qt 4 hem de Qt 5 ile çalışır. PyQt sürüm 5, yalnızca Qt sürüm 5'i destekler[8] ve Qt 5'te kullanımdan kaldırılan özellikler için desteği bırakır.

Hello World örneğiDüzenle

Aşağıdaki kod, ekranda küçük bir pencere göstermektedir.

PyQt4Düzenle

 
KDE Plazma 4'teki sonuç
#! /usr/bin/env python3
# Character Encoding: UTF-8
#
# Here we provide the necessary imports.
# The basic GUI widgets are located in QtGui module. 
import sys
from PyQt4.QtGui import QApplication, QWidget

# Every PyQt4 application must create an application object.
# The application object is located in the QtGui module.
app = QApplication(sys.argv)

# The QWidget widget is the base class of all user interface objects in PyQt4.
# We provide the default constructor for QWidget. The default constructor has no parent.
# A widget with no parent is called a window. 
root = QWidget()

root.resize(320, 240)  # The resize() method resizes the widget.
root.setWindowTitle("Hello, World!")  # Here we set the title for our window.
root.show()  # The show() method displays the widget on the screen.

sys.exit(app.exec_())  # Finally, we enter the mainloop of the application.

PyQt5Düzenle

#! /usr/bin/env python3
# Character Encoding: UTF-8
#
# Here we provide the necessary imports.
# The basic GUI widgets are located in QtWidgets module. 
import sys
from PyQt5.QtWidgets import QApplication, QWidget

# Every PyQt5 application must create an application object.
# The application object is located in the QtWidgets module.
app = QApplication(sys.argv)

# The QWidget widget is the base class of all user interface objects in PyQt5.
# We provide the default constructor for QWidget. The default constructor has no parent.
# A widget with no parent is called a window. 
root = QWidget()

root.resize(320, 240)  # The resize() method resizes the widget.
root.setWindowTitle("Hello, World!")  # Here we set the title for our window.
root.show()  # The show() method displays the widget on the screen.

sys.exit(app.exec_())  # Finally, we enter the mainloop of the application.

PyQt kullanan önemli uygulamalarDüzenle

  • Anki, aralıklı tekrarlı bir bilgi kartı programı
  • Calibre, bir E-kitap yönetim uygulaması
  • Dropbox, bir dosya barındırma hizmeti
  • Eric Python IDE
  • fman, çapraz platform dosya yöneticisi
  • Frescobaldi, LilyPond müzik dosyaları için bir puan düzenleyici
  • Kodos, bir Python Regular expression hata ayıklayıcısı (debugger)
  • Leo, anahat ve okuryazar bir programlama editörü
  • Ninja-IDE, genişletilebilir bir açık kaynaklı Python IDE'si.
  • OpenLP, açık kaynaklı bir şarkı sözü projeksiyon programı
  • OpenShot, bir video düzenleme programı
  • Orange, bir veri madenciliği ve görselleştirme çerçevesi
  • Puddletag, açık kaynaklı, platformlar arası bir ID3 etiket düzenleyicisi
  • QGIS, ücretsiz bir yazılım masaüstü Coğrafi Bilgi Sistemleri (GIS) uygulaması
  • qt-recordMyDesktop, recordMyDesktop için bir Qt4 ön ucu
  • Spyder, bir Python veri bilimi IDE'si
  • TortoiseHg, Mercurial kaynak yönetimi programı (Hg) için bir grafik arayüz programı
  • Veusz, bilimsel bir komplo uygulaması

Ayrıca bakınızDüzenle

PyQt, Python'un GUI programlama seçeneklerinden biridir. Popüler alternatifler olarak PySide (resmi destek ve daha liberal bir lisansla Qt bağlayıcılığı), PyGTK, wxPython, Kivy ve Tkinter (Python ile birlikte gelir) örnek verilebilmektedir.

KaynakçaDüzenle

  1. ^ https://pypi.org/project/PyQt5/#history
  2. ^ "PyQt4 Download". Riverbankcomputing. 2010. 1 Mayıs 2008 tarihinde kaynağından arşivlendi. Erişim tarihi: 19 Nisan 2010. 
  3. ^ "PyQt". 23 Eylül 2004 tarihinde kaynağından arşivlendi. 
  4. ^ "PyQt-Riverbank". 19 Şubat 2006 tarihinde kaynağından arşivlendi. 
  5. ^ "Python Wiki". 8 Kasım 2005 tarihinde kaynağından arşivlendi. 
  6. ^ "PyQt-Yapay zeka labs". 24 Mayıs 2021 tarihinde kaynağından arşivlendi. 
  7. ^ ""Riverbank | Software | PyQt | What is PyQt?"". 2 Mayıs 2008 tarihinde kaynağından arşivlendi. 
  8. ^ "PyQt nedir?". 2 Mayıs 2008 tarihinde kaynağından arşivlendi.