PyQt, Python programlama dili için Qt framework'ünü kullanarak grafiksel kullanıcı arayüzü (GUI) geliştirmeye olanak sağlayan bir kütüphanedir. Riverbank Computing tarafından geliştirilmiştir ve Qt'nin resmi Python bağlantılarından biridir. PyQt, Qt'nin tüm özelliklerini Python'a taşır ve C++ yerine Python kullanarak hızlı ve etkili GUI uygulamaları yazmayı mümkün kılar.
PyQt’nin Temel Özellikleri ve Bileşenleri
PyQt, Qt’nin sunduğu tüm modülleri Python üzerinden kullanmayı sağlar:
QtWidgets (GUI Bileşenleri)
- QMainWindow: Ana pencere yapısı (menüler, araç çubukları, durum çubuğu).
- QPushButton, QLabel, QLineEdit: Temel etkileşimli bileşenler.
- QComboBox, QListWidget, QTableView: Veri gösterim ve seçim araçları.
- QDialog: Özel iletişim pencereleri (dosya açma, yazdırma vb.).
QtCore (Temel Fonksiyonlar)
- Signal & Slot Mekanizması: Olay tabanlı programlama için kullanılır.
- QThread: Çoklu iş parçacığı (multithreading) desteği.
- QTimer: Zamanlayıcı işlemleri.
QtGui (Grafik ve Görüntü İşleme)
- QPainter: Özel çizimler ve grafikler oluşturma.
- QPixmap, QImage: Resim işleme fonksiyonları.
QtNetwork (Ağ İşlemleri)
- QTcpSocket, QUdpSocket: TCP/UDP tabanlı ağ bağlantıları.
- QNetworkAccessManager: HTTP istekleri (API bağlantıları).
QtMultimedia (Ses ve Video İşlemleri)
- QMediaPlayer: Video ve ses oynatıcı.
- QCamera: Kamera erişimi.
QtWebEngine (Web Entegrasyonu)
- QWebEngineView: Bir web tarayıcıyı uygulamaya gömme (Chromium tabanlı).
PyQt'nin Kullanım Alanları
PyQt, geniş bir uygulama yelpazesinde kullanılabilir:
Masaüstü Uygulamaları
- Veritabanı yönetim sistemleri
- Ofis yazılımları
- Medya oynatıcılar
Bilimsel ve Mühendislik Uygulamaları
- Veri görselleştirme araçları
- Simülasyon yazılımları
Endüstriyel Otomasyon
- SCADA sistemleri
- Robot kontrol arayüzleri
PyQt ile Temel Bir Uygulama Örneği
Not Defteri Uygulaması
from PyQt5.QtWidgets import QApplication, QMainWindow, QTextEdit, QAction, QFileDialog class NotDefteri(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): # Metin düzenleme alanı self.text_edit = QTextEdit() self.setCentralWidget(self.text_edit) # Dosya menüsü oluştur menubar = self.menuBar() dosya_menu = menubar.addMenu('Dosya') # Aç seçeneği ac = QAction('Aç', self) ac.triggered.connect(self.dosya_ac) dosya_menu.addAction(ac) # Kaydet seçeneği kaydet = QAction('Kaydet', self) kaydet.triggered.connect(self.dosya_kaydet) dosya_menu.addAction(kaydet) self.setWindowTitle('PyQt Not Defteri') self.setGeometry(100, 100, 600, 400) def dosya_ac(self): dosya_adi, _ = QFileDialog.getOpenFileName(self, "Dosya Aç") if dosya_adi: with open(dosya_adi, 'r') as f: self.text_edit.setText(f.read()) def dosya_kaydet(self): dosya_adi, _ = QFileDialog.getSaveFileName(self, "Dosya Kaydet") if dosya_adi: with open(dosya_adi, 'w') as f: f.write(self.text_edit.toPlainText()) if __name__ == '__main__': app = QApplication([]) pencere = NotDefteri() pencere.show() app.exec_()
Bu kod:
- Dosya açma/kaydetme işlevselliği sunar.
- QTextEdit ile metin düzenleme yapar.
- QFileDialog ile dosya seçme penceresi açar.
PyQt'nin Avantajları ve Dezavantajları
Avantajlar
- Platformlar arası uyumluluk
- Zengin bileşen kütüphanesi
- Hızlı uygulama geliştirme
Dezavantajlar
- Öğrenme eğrisinin dik olması
- Bazı durumlarda performans sorunları