PyQt5 Belgelendirmesi
  • PyQt5 Belgelendirmesi
  • Temel Bilgiler
    • Qt Hakkında
    • PyQt Hakkında
    • Kurulum
    • Linux Dağıtımları
    • Windows
    • Son Hazırlıklar
  • PyQt5'e Giriş
    • Basit Pencere Oluşturma
    • Nesne Tabanlı Geliştirme
    • Ana Pencere Türleri
      • QDialog
      • QWidget
      • QMainWindow
  • Temel Pencere İşlemleri
    • Pencere Boyutunu Ayarlamak
    • Pencere Konumunu Ayarlamak
    • Pencere Simgesini Ayarlamak
  • Temel Pencere Araçları
    • QLabel
    • QLineEdit
    • QPushButton
    • QRadioButton
    • QCheckBox
    • QComboBox
    • QTextEdit
    • QListWidget
    • QListWidgetItem
  • Pencere Araçlarının Yerleşimi
    • QVBoxLayout
    • QHBoxLayout
    • QFormLayout
    • QGridLayout
  • Ana Pencere Araçları
    • QMenuBar
    • QMenu
    • QAction
    • QToolBar
    • QStatusBar
  • Mesaj Kutuları
    • Hakkında Kutusu
    • Bilgi Mesajı Kutusu
    • Uyarı Mesajı Kutusu
    • Kritik Hata Mesajı Kutusu
    • Sorun Mesajı Kutusu
  • Standart Dialoglar
    • Renk Dialogu
    • Dosya Dialogu
    • Yazı Tipi Dialogu
    • Girdi Dialogu
    • Yazdırma Dialogu
    • Süreç Dialogu
  • Nasıl Yapılır
Powered by GitBook
On this page

Was this helpful?

  1. PyQt5'e Giriş

Nesne Tabanlı Geliştirme

Yukarıda örneklerini verdiğimiz şekilde, PyQt5 ile prosedür tabanlı (yordamsal) programlama ilkelerine uygun bir geliştirme sürecini takip edebilirsiniz. Ancak hem kullanışlılık açısından, hem de internet üzerinde bulacağınız örnek programların yapısı nedeniyle prosedür tabanlı programlama yerine nesneye yönelik programlama tarzını benimsemenizi tavsiye ederim.

Bir örnek verelim.

Bildiğiniz gibi, PyQt5’te boş bir pencereyi şu kodlarla oluşturuyoruz:

from PyQt5.QtWidgets import *
import sys

uygulama = QApplication(sys.argv)
pencere = QWidget()
pencere.show()

uygulama.exec_()

Burada programımız, karşısına çıkan kodları belli bir prosedürü takip ederek tek tek çalıştırıyor. Ancak internet üzerinde veya başka kaynaklarda bu şekilde yazılmış kod pek göremezsiniz. Hem daha kullanışlı olması, hem de kodların bakımını kolaylaştırması nedeniyle grafik arayüz tasarlanırken genellikle nesneye yönelik programlama tarzını takip etmek çok daha mantıklı olacaktır. Dolayısıyla yukarıdaki kodları şu şekilde yazabiliriz:

from PyQt5.QtWidgets import *
import sys

class YeniPencere(QWidget):
    def __init__(self):
        QWidget.__init__(self)

uygulama = QApplication(sys.argv)
pencere = YeniPencere()
pencere.show()
uygulama.exec_()

Eğer taban sınıfı (QWidget) iki kez yazmak istemiyorsanız super() fonksiyonundan yararlanabilirsiniz:

from PyQt5.QtWidgets import *
import sys

class YeniPencere(QWidget):
    def __init__(self):
        super(YeniPencere, self).__init__()

uygulama = QApplication(sys.argv)
pencere = YeniPencere()
pencere.show()
uygulama.exec_()

Hatta, Python3 ile gelen yeni bir özellikten yararlanarak, ne taban sınıfı, ne de sınıf adını iki kez belirtmeyi tercih edebilirsiniz:

from PyQt5.QtWidgets import *
import sys

class YeniPencere(QWidget):
    def __init__(self):
        super().__init__()

uygulama = QApplication(sys.argv)
pencere = YeniPencere()
pencere.show()
uygulama.exec_()

Bu şekilde, aynı şeyleri tekrar tekrar yazma zahmetinden kurtulmanın yanısıra, sınıf adında veya miras alınan taban sınıfta bir değişiklik yapmanız gerektiğinde init() metodunun içeriğini de uygun bir şekilde değiştirme derdini bertaraf etmiş olursunuz.

PreviousBasit Pencere OluşturmaNextAna Pencere Türleri

Last updated 5 years ago

Was this helpful?