• 0 Oy - 0 Ortalama
  • 1
  • 2
  • 3
  • 4
  • 5
PyQt Pencere Düzenleri

 
#1

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]

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]


Ç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




Bul
Alıntı


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  PyQt Class Kullanımı efsane 0 2,325 02-06-2017, Saat: 13:03
Son Mesaj: efsane
  PyQt Grid Layout (Izgara Pencere Düzeni) efsane 0 2,303 02-06-2017, Saat: 12:59
Son Mesaj: efsane
  PyQt sinyaller ve Slotlar efsane 0 2,403 02-06-2017, Saat: 12:47
Son Mesaj: efsane
  Merhaba PyQt efsane 0 2,191 02-06-2017, Saat: 12:25
Son Mesaj: efsane
  PyQt giriş efsane 0 2,212 02-06-2017, Saat: 11:48
Son Mesaj: efsane

Digg   Delicious   Reddit   Facebook   Twitter   StumbleUpon  


Bu konuyu görüntüleyen kullanıcı(lar):
1 Ziyaretçi

   
Türkçe Çeviri: Emre KRMN, Kodlayanlar MyBB, © 2002-2023 MyBB Group.  



Merih Forum® bilgi paylaşım platformu. 2015-∞ Tüm hakları saklıdır.