29 Eylül 2014 Pazartesi

PyQt Class Kullanımı

       Grafiksel kullanıcı arayüzüne sahip programlar genellikle bir çok pencere ve işlev içermektedir. Dolayısıyla bütün bu pencere ve işlevleri tek bir dosyada tutmak oldukça kafa karıştırıcı bir hale gelmeye başlar. Bu tür bir karmaşıklığı önlemek ve programımızı daha modüler bir hale getirmek için classları kullanırız.

Şimdi bir önceki konuda yazdığımız programı class kullanarak tekrar yazalım:
# !/usr/bin/env python
# -*- coding: cp1254 -*-
 
from PyQt4.QtGui import *
from PyQt4.QtCore import *

class sinifProgrami(QDialog):
    def __init__(self, parent=None):
        super(sinifProgrami, self).__init__(parent)

        self.metin = QLabel('
PythonDersleri.com
') self.butonKirmizi = QPushButton('Kırmızı') self.connect(self.butonKirmizi, SIGNAL('pressed()'), self.kirmiziMetin) self.butonMavi = QPushButton('Mavi') self.connect(self.butonMavi, SIGNAL('pressed()'), self.maviMetin) izgara = QGridLayout() izgara.addWidget(self.metin, 0, 1, 2, 1) izgara.addWidget(self.butonKirmizi, 0, 0) izgara.addWidget(self.butonMavi, 1, 0) self.setLayout(izgara) self.setWindowTitle('PyQt Grid Layout') self.setFixedSize(450, 150) def kirmiziMetin(self): self.metin.setText('
Merhaba Dünyalı :)
') def maviMetin(self): self.metin.setText('
Uygar Köroğlu
') uygulama = QApplication([]) pencere = sinifProgrami() pencere.show() uygulama.exec_()

Bu kodu çalıştırdığımızda da çıktı değişmeyecektir:

PyQt classları QWidget nesnesi olabileceği gibi QDialog nesnesi de olabilir. Hangisinin nesnesi ise ona ait tüm özellikleri de taşıyacaktır. 
Yazmış olduğumuz kodları satır satır açıklamaktan ziyade bu koda baktığımızda farklı olarak gözümüze ilk şu satır çarpmaktadır:
super(sinifProgrami, self).__init__(parent)
Bu satırda parenttan bahsettik yani ebeveyn. Program alt pencerelerden oluşmaya başladığında, hangi pencerenin hangi pencereye ait alt pencere olduğunu ayırt etmek için bu yapı kullanılır. Biz bu pencerenin bir alt pencere olmadığını, bizim penceremizin bir ana pencere olduğunu parent=None ifadesiyle belirttik.
Bir class'ın başlamasını sağlamak için super() metodu kullanılmakta. super() metodu parametre olarak; ilk parametrede class'ın adını, ikinci parametrede ise self olarak kendisini alır. __init__() metoduna ise hangi pencerenin alt penceresi olduğunu parametre olarak yazarız.

0 yorum :

Yorum Gönder