Bu öğretici, esnek ve düzenli kullanıcı arayüzleri oluşturmak için PyQt5’in güçlü QGridLayout
‘ının kullanımı hakkında kapsamlı bir kılavuz sunmaktadır. Temelleri, hücreleri kapsama ve widget gerdirmeyi kontrol etme gibi gelişmiş teknikleri ele alacak ve anlayışınızı pekiştirmek için pratik örnekler sunacağız.
İçerik Tablosu
- QGridLayout’ın Temel Kullanımı
- Birden Fazla Hücreyi Kaplama
- Widget Gerdirmeyi Kontrol Etme
- Gelişmiş Teknikler ve Hususlar
1. QGridLayout’ın Temel Kullanımı
QGridLayout
, widget’ları satır ve sütunlardan oluşan bir ızgara içinde düzenler. Her widget varsayılan olarak tek bir hücreyi kaplar. Basit bir örnek ile başlayalım:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QGridLayout
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("PyQt5 Izgara Düzeni Örneği")
layout = QGridLayout()
button1 = QPushButton("Düğme 1")
button2 = QPushButton("Düğme 2")
button3 = QPushButton("Düğme 3")
button4 = QPushButton("Düğme 4")
layout.addWidget(button1, 0, 0) # Satır 0, Sütun 0
layout.addWidget(button2, 0, 1) # Satır 0, Sütun 1
layout.addWidget(button3, 1, 0) # Satır 1, Sütun 0
layout.addWidget(button4, 1, 1) # Satır 1, Sütun 1
window.setLayout(layout)
window.show()
sys.exit(app.exec_())
Bu, 2×2’lik bir düğme ızgarası oluşturur. addWidget(widget, row, column)
, belirtilen satıra ve sütuna (sıfır tabanlı) bir widget ekler.
2. Birden Fazla Hücreyi Kaplama
Bir widget’ın birden fazla satırı veya sütunu kaplamasını sağlamak için addWidget(widget, row, column, rowspan, colspan)
kullanın. rowspan
ve colspan
, widget’ın kapladığı satır ve sütun sayısını tanımlar.
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QGridLayout, QLabel
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("PyQt5 Izgara Düzeni Kaplama Örneği")
layout = QGridLayout()
label = QLabel("Bu etiket iki sütunu kaplar")
button1 = QPushButton("Düğme 1")
button2 = QPushButton("Düğme 2")
layout.addWidget(label, 0, 0, 1, 2) # İki sütunu kaplar
layout.addWidget(button1, 1, 0)
layout.addWidget(button2, 1, 1)
window.setLayout(layout)
window.show()
sys.exit(app.exec_())
Burada, etiket iki sütunu kaplamaktadır.
3. Widget Gerdirmeyi Kontrol Etme
Varsayılan olarak, widget’lar minimum boyutlarına göre boyutlandırılır. Widget’ların mevcut alanı doldurmasını kontrol etmek için setColumnStretch(column, stretch)
ve setRowStretch(row, stretch)
kullanın. Daha yüksek bir gerdirme faktörü, widget’ın mevcut alanın daha büyük bir bölümünü alacağı anlamına gelir.
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QGridLayout
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("PyQt5 Izgara Düzeni Gerdirme Örneği")
layout = QGridLayout()
button1 = QPushButton("Düğme 1")
button2 = QPushButton("Düğme 2")
layout.addWidget(button1, 0, 0)
layout.addWidget(button2, 0, 1)
layout.setColumnStretch(1, 2) # Sütun 1, sütun 0'ın iki katı kadar gerilir
window.setLayout(layout)
window.show()
sys.exit(app.exec_())
button2
artık button1
‘in yatay alanının iki katını alacaktır.
4. Gelişmiş Teknikler ve Hususlar
Daha karmaşık düzenler için şunları göz önünde bulundurun:
addLayout()
: İç içe geçmiş yapılar için diğer düzenleri birQGridLayout
içine yerleştirin.- Hizalama: Widget’ların hücreler içindeki hizalamasını kontrol etmek için
setAlignment()
kullanın. - Boşluk: Satırlar ve sütunlar arasındaki boşluğu
setVerticalSpacing()
vesetHorizontalSpacing()
kullanarak ayarlayın. - Kenar Boşlukları: Tüm ızgara çevresindeki kenar boşluklarını
setContentsMargins()
kullanarak kontrol edin.
Bu tekniklerde ustalaşmak, gelişmiş ve oldukça uyarlanabilir PyQt5 arayüzleri oluşturmanıza olanak tanıyacaktır.