02-06-2017, Saat: 12:41
Grafiksel arayüze sahip programlar genellikle birden çok pencereye sahiptirler. Ve bu pencereler de genellikle kendi içlerinde farklı parçacıklar bulundurmaktadırlar. Yani kendilerine ait butonları, labelları, text alanları gibi parçacıkları olmaktadır. Biz de programlarımızı yazarken kullandığımız parçacıkların sayısı arttığında, bunları penceremize nasıl yerleştireceğimiz konusunda birtakım pencere düzeni uygulama gereksinimi duymaktayız.
Örneğin; yerleştirmek istediğimiz bir label ve bir butonumuz olsun. Bunları yandaki şekildeki gibi yan yana veya alt alta koymak isteyebiliriz.
![[Resim: Yerle%C5%9Fim.jpg]](http://2.bp.blogspot.com/-oPL_SEsQU5E/Uwagq19QNzI/AAAAAAAAAhY/YYw2beT5Ry4/s1600/Yerle%C5%9Fim.jpg)
Bu yapılar Layout olarak isimlendirilirler. Biz burada kutu demeyi tercih ediyoruz. Bu şekillerden ilki dikey bir kutu (QVBoxLayout) diğeri ise yatay bir kutudur (QHBoxLayout). Bu kutulara eleman eklemek istediğimizde (addWidget) dikey kutuda her eklenen eleman alta gelecek şekilde, yatay kutuda ise sağ tarafa gelecek şekilde ekleme işlemi gerçekleşmektedir. Bir parçacık eklemek için addWidget() metodu kullandığımız için penceremizin de QWidget() nesnesi olması gerekir.
Şimdi bu bahsettiklerimiz hakkında bir örnek yazalım ve bu örnek üzerinden kodları açıklayalım.
# !/usr/bin/env python
# -*- coding: cp1254 -*-
from PyQt4.QtGui import *
uygulamam = QApplication([])
pencere = QWidget()
etiket = QLabel('PythonDersleri.com')
buton = QPushButton('Butonum')
yatayKutu = QHBoxLayout()
yatayKutu.addWidget(etiket)
yatayKutu.addWidget(buton)
pencere.setLayout(yatayKutu)
pencere.setWindowTitle('Programım')
pencere.show()
uygulamam.exec_()
1. Satır = Yazdığımız kodların Python kodu olduğunu ve Python'un dizinini belirtiyoruz. (Linux için)
2. Satır = Türkçe karakterlerin desteklenmesini istediğimizi belirtiyoruz.
3. Satır = Grafiksel arayüz için gerekli modülü programımıza dahil ettik.
5. Satır = Bir QApplication nesnesi oluşturuyoruz.
6. Satır = Bir tane Widget oluşturduk.
7. Satır = İçeriği "PythonDersleri.com" olan bir Label oluşturduk.
8. Satır = Üzerinde "Butonum" yazan bir buton oluşturduk.
10. Satır = Yatay şekilde eleman ekleyebileceğimiz bir kutu oluşturduk.
11. Satır = Oluşturduğumuz yatay kutunun içine Labelımızı ekledik.
12. Satır = Yine yatay kutunun içine butonumuzu da ekledik.
14. Satır = Pencere düzenimizin oluşturduğumuz yatay kutu olacağını belirttik.
15. Satır = Program penceremizin başlığında "Programım" yazmasını belirttik.
16. Satır = Penceremizin görüntülenmesini istedik.
18. Satır = Uygulamamızın çalışmasını istedik.
Kodu çalıştırdığımızda ise bize şöyle bir çıktı verecektir:
![[Resim: Program%C4%B1m.jpg]](http://3.bp.blogspot.com/-T6taXpuXKJs/UwapP74fH6I/AAAAAAAAAho/YCC5fV9UrGo/s1600/Program%C4%B1m.jpg)
Çalışma Sorusu: Yukarıda yatay bir kutu için yazmış olduğumuz kodu dikey bir kutu için yeniden yazın; ancak bu kez üstte buton altta label bulunsun.
PENCERE BOYUTLARI VE YERİ
Yukarıda yazmış olduğumuz gibi bir kod yazdığımızda programımız parçacıkları yerleştirebildiği minimum boyutlarda açılacaktır. Biz istersek bu boyutları değiştirebiliriz (resize). Ancak bu değiştirme işlemi küçültme yönünde değil, büyütme yönünde yapılabilmektedir. Küçültmeye çalıştığınızda ise parçacıkların yerleştirildiği minimum boyutlarda açılacaktır. Boyutları değiştirebileceğimiz gibi programın sol üst köşeden itibaren kaç piksel uzaklıkta başlayacağını da belirleyebiliriz (move). Bu değişikliklerin nasıl olduğunu görmek için ise yukarıda yazmış olduğumuz koda pencere.setWindowTitle('Programım') satırından sonra aşağıdaki kodları ekleyin ve değişikliği görmek için çalıştırın.
pencere.resize(300, 100) # Yeni boyutlar
pencere.move(50, 50) # Sol üst köşeden uzaklık