wxPython - Düzen Yönetimi

Bir GUI pencere öğesi, piksel cinsinden ölçülen mutlak koordinatları belirtilerek konteyner penceresinin içine yerleştirilebilir. Koordinatlar, yapıcısının boyut bağımsız değişkeni tarafından tanımlanan pencerenin boyutlarına göredir. Pencere içindeki pencere aracının konumu şu şekilde tanımlanır:pos yapıcısının argümanı.

import wx  

app = wx.App() 
window = wx.Frame(None, title = "wxPython Frame", size = (300,200)) 
panel = wx.Panel(window) 
label = wx.StaticText(panel, label = "Hello World", pos = (100,50)) 
window.Show(True) 
app.MainLoop()

Bu Absolute Positioning ancak aşağıdaki nedenlerden dolayı uygun değildir -

  • Pencere yeniden boyutlandırılsa bile widget'ın konumu değişmez.

  • Farklı çözünürlüklere sahip farklı görüntüleme cihazlarında görünüm tek tip olmayabilir.

  • Tüm formun yeniden tasarlanması gerekebileceğinden mizanpajda değişiklik yapmak zordur.

wxPython API, konteyner içindeki widget'ların daha zarif bir şekilde konumlandırılması için Layout sınıfları sağlar. Layout yöneticilerinin mutlak konumlandırmaya göre avantajları şunlardır:

  • Pencerenin içindeki widget'lar otomatik olarak yeniden boyutlandırılır.
  • Farklı çözünürlüklere sahip ekran cihazlarında tek tip görünüm sağlar.
  • Yeniden tasarlamaya gerek kalmadan dinamik olarak widget eklemek veya kaldırmak mümkündür.

Düzen yöneticisine wxPython'da Sizer denir. Wx.Sizer, tüm boyutlandırma alt sınıfları için temel sınıftır. Wx.BoxSizer, wx.StaticBoxSizer, wx.GridSizer, wx.FlexGridSizer ve wx.GridBagSizer gibi bazı önemli boyutlandırıcılardan bahsedelim.

SN Boyutlandırıcılar ve Açıklama
1 BoxSizer

Bu boyutlandırıcı, kontrollerin sıra veya sütun şeklinde düzenlenmesine izin verir. BoxSizer'ın düzeni, yönelim argümanına göre belirlenir (wxVERTICAL veya wxHORIZONTAL).

2 GridSizer

Adından da anlaşılacağı gibi, GridSizer nesnesi iki boyutlu bir ızgara sunar. Kontroller, ızgara yuvasına soldan sağa ve yukarıdan aşağıya sırayla eklenir.

3 FlexiGridSizer

Bu boyutlandırıcının ayrıca iki boyutlu bir ızgarası vardır. Bununla birlikte, hücrelerdeki kontrollerin yerleştirilmesinde biraz daha fazla esneklik sağlar.

4 GridBagSizer

GridBagSizer çok yönlü bir boyutlandırıcıdır. FlexiGridSizer'dan daha fazla geliştirme sunar. Alt pencere öğesi, ızgara içindeki belirli bir hücreye eklenebilir.

5 StaticBoxSizer

StaticBoxSizer, statik bir kutuya bir kutu boyutlandırıcı koyar. Üstte bir etiket ile birlikte kutunun etrafında bir sınır sağlar.