PyQt5, Layouts, Adding Functions

Kategori: Python , 09 Eylül 2019 , JanFranco


PyQt5 ile GUI programcılığa devam ediyoruz. Bu yazıda layoutları ve butona fonksiyon eklemeyi göreceğiz. sys kütüphanesini ve QtWidgets sınıfını import ederek başlayalım:


import sys
from PyQt5 import QtWidgets
Bir önceki yazımda direk olarak bir fonksiyon tanımlayıp o fonksiyonu çağırmıştık. Bu kez Window bir sınıf oluşturalım. Bu sınıf QtWidget sınıfını miras aslın. Constructor methodda, miras aldığımız sınıfın constructor methodunu ve kendi tanımlayacağımız init_ui methodunu çağıralım:


class Window(QtWidgets.QWidget):
    def __init__(self):
        super().__init__()
        self.init_ui()
init_ui() methodunu tanımlayalım. Programımız butona her tıklandığında count adındaki bir değişkeni bir artırsın ve bu değişkenin değeri bir label'da yazsın.


    def init_ui(self):
        self.count = 0
        self.label = QtWidgets.QLabel("Not yet clicked on me")
        self.button = QtWidgets.QPushButton("Click Me")
Aynı methoda yazmaya devam edelim, VBoxLayout ve HBoxLayout tanımlayalım. VBoxLayout dikey, HBoxLayout yatay bir layout'tur. VBoxLayout'a elementlerimizi ekleyelim, daha sonra VBoxLayout'ı HBoxLayout'a ekleyelim:


        v_box = QtWidgets.QVBoxLayout()
        v_box.addWidget(self.label)
        v_box.addWidget(self.button)
        v_box.addStretch()

        h_box = QtWidgets.QHBoxLayout()
        h_box.addStretch()
        h_box.addLayout(v_box)
        h_box.addStretch()
HBoxLayout'ı forma ekleyelim, butona fonksiyon tanımlayalım:


        self.setLayout(h_box)
        self.button.clicked.connect(self.click)
        self.show()
Butona click methodunu gönderdik şimdi de click methodunu tanımlayalım. init_ui methodunu yazmayı bitirdik, click methoduna geçtik. click methodunu da aynı sınıfta yazacağız:


    def click(self):
        self.count += 1
        self.label.setText("{} times clicked on me".format(self.count))
Sınıfı yazmayı bitirdik, şimdi sınıftan bir obje türetelim. Obje türettiğimizde constructor method çağırılacak ve constructor methoddan direk olarak init_ui() methodu çağırılacak:


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    window = Window()
    sys.exit(app.exec_())



Sonraki Yazı: PyQt5, QLineEdit
Yorumlar

Henüz bir yorum bulunmuyor.
Yorum bırakın