CodeGym /Kurslar /Python SELF AZ /İnterfeys elementlərinin tərtibi əsasları (grid, pack)

İnterfeys elementlərinin tərtibi əsasları (grid, pack)

Python SELF AZ
Səviyyə , Dərs
Mövcuddur

1. Tkinter-də elementlərin yerləşdirilməsi metodları

Bəlkə də artıq fərqinə varmışsınız, qrafik interfeyslər sadəcə ekranda səpələnmiş düymələr və mətn sahələri deyil. Bunlar yaxşı struktura malik və erqonomik tətbiqlərdir, burada hər detal öz yerindədir. Tkinter üç əsas yerləşdirmə metodunu təklif edir: pack, gridplace. Bu gün biz packgrid üzərində dayanacağıq, place-i isə daha mürəkkəb kompozisiyalar üçün və ya elementləri tam konkret mövqelərdə yerləşdirmək lazım gələndə saxlayacağıq.

pack ilə tanışlıq

pack metodu vidcetlərin yerləşdirilməsi üçün sadə və intuitiv bir yanaşmadır. O, elementləri "birinci gələn – birinci yerləşdirilir" prinsipi ilə düzür və interfeysi tez və rahat şəkildə təşkil etməyə imkan verir. Lakin sadəliyinə görə bəzən elementlərin dəqiq yerləşdirilməsinə tam nəzarət təklif etmir.

pack-in istifadəsinə nümunə


import tkinter as tk

root = tk.Tk()
root.title("pack ilə yerləşdirmə nümunəsi")

# Bir neçə vidcet yaradırıq
label = tk.Label(root, text="Mən yazıyam")
button = tk.Button(root, text="Mən düyməyəm")

# Vidcetləri pack ilə yerləşdiririk
label.pack()
button.pack()

root.mainloop()

Bu nümunədə labelbutton sadəcə bir-birinin altında, dostcasına bir növbədə düzülür. Starbucks-da növbələr necə işlədiyini bilirsinizsə, bu sizə tanış gələcək!

grid ilə tanışlıq

Əgər pack şən və xaotik bir festivaldırsa, grid klassik bir kitabxanadır, burada hər kitab (yəni, vidcet) dəqiq bir rəf üzərində yerləşir. grid metodu elementləri cədvəl şəklində yerləşdirməyə imkan verir, dəqiq mövqe idarəetməsi təklif edir. Artıq burada hansı elementlərin bir-birinə yaxın olacağını siz qərar verirsiniz.

grid-in istifadəsinə nümunə


import tkinter as tk

root = tk.Tk()
root.title("grid ilə yerləşdirmə nümunəsi")

# Düymələr yaradırıq
buttons = [
    "1", "2", "3",
    "4", "5", "6",
    "7", "8", "9",
    "0", "+", "="
]

# Düymələri şəbəkəyə daxil edirik
row_val = 0
col_val = 0

for button in buttons:
    btn = tk.Button(root, text=button, width=5)
    btn.grid(row=row_val, column=col_val)
    col_val += 1
    if col_val > 2:
        col_val = 0
        row_val += 1

root.mainloop()

Bu nümunədə grid düymələri səhər yoxlamasında sıraya düzülmüş kimi görünür, bu da daha nizamlı və peşəkar təsir bağışlayır.

2. Elementlərin yerləşdirilməsi üçün pack istifadə olunması

pack metodunun elementlərin bir-birinə nisbətən necə yerləşdiriləcəyini idarə etməyə imkan verən bir neçə rejimi var. O, side, fill, expandpadx/pady kimi parametrləri dəstəkləyir.

pack tənzimləməsi

  • side: Elementin valideyn konteynerin hansı tərəfində yerləşdiriləcəyini təyin edir. Bu, TOP, BOTTOM, LEFT və ya RIGHT ola bilər.
  • fill: Elementin ox boyunca boş sahəni doldurub-doldurmayacağını təyin edir. Məsələn, X üfüqi olaraq dolduracaq, Y isə şaquli olaraq dolduracaq.
  • expand: Layout menecerinə elementin əlavə yer tutub-tutmayacağını bildirir, belə bir yer yaranarsa.
  • padx/pady: Üfüqi və şaquli olaraq boşluqları təyin edir.

pack metodunun geniş istifadə nümunəsi


import tkinter as tk

root = tk.Tk()
root.title("pack metodunun geniş nümunəsi")

tk.Label(root, text="Üstdə").pack(side=tk.TOP, fill=tk.X)
tk.Label(root, text="Altda").pack(side=tk.BOTTOM, fill=tk.X)
tk.Label(root, text="Solda").pack(side=tk.LEFT, fill=tk.Y)
tk.Label(root, text="Sağda").pack(side=tk.RIGHT, fill=tk.Y)

root.mainloop()

3. Şəbəkə yerləşdirilməsi üçün grid-dən istifadə

grid metodu daha mürəkkəbdir və şəbəkə və hüceyrələrlə işləmə prinsiplərinin başa düşülməsini tələb edir. Amma bunu öyrəndikdən sonra istənilən mürəkkəblikdə interfeyslər yarada bilərsiniz.

grid-in tənzimlənməsi

  • row / column: Elementin hansı sətir və ya sütunda yerləşəcəyini müəyyən edir.
  • rowspan / columnspan: Elementin neçə sətir və ya sütunu əhatə edəcəyini müəyyən edir.
  • sticky: Elementin hüceyrə sərhədlərinə necə "yapışacağını" müəyyən edir. Parametrlər N, E, S, W və onların kombinasiyaları ola bilər.

grid-in genişləndirilmiş istifadəsinə dair nümunə


import tkinter as tk

root = tk.Tk()
root.title("Grid-in genişləndirilmiş nümunəsi")

# Etiketlər yaradırıq və onları şəbəkədə yerləşdiririk
tk.Label(root, text="Sıra 0, Sütun 0").grid(row=0, column=0, sticky="W")
tk.Label(root, text="Sıra 0, Sütun 1").grid(row=0, column=1, sticky="E")
tk.Label(root, text="Sıra 1, Sütun 0").grid(row=1, column=0, columnspan=2)

root.mainloop()

4. Praktiki tətbiq və tipik səhvlər

Təkcə bir tərtibat metodundan istifadə etmək istəyi ola bilər, amma əksər hallarda onları birləşdirmək lazım olur. Çox vaxt rast gəlinən səhvlər: mainloop funksiyasını çağırmağı unutmaq, sətir və ya sütun indeksini səhv yazmaq, lazım olduqda expandfill istifadə etməməkdir. İnterfeys inkişaf etdirərkən baş ağrısından qaçmaq üçün hər zaman pack və ya grid çağırma qaydasını yoxlayın və onların parametrlərini düzgün istifadə etdiyinizə əmin olun.

packgrid arasındakı fərq elementlərin yerləşməsindəki elastiklik və nəzarətdir. pack sadə şaquli və ya üfüqi interfeyslər üçün daha rahatdır, halbuki grid dəqiq element mövqelərinin vacib olduğu mürəkkəb layoutlar üçün idealdır.

İndi, tərtibat metodlarından istifadə edərək öz interfeyslərinizi yaratmağa hazır olduğunuzda yadınızda saxlayın ki, widget-ları ekranda yerləşdirmək bir ziyafət təşkil etmək kimidir. Hər kəs özünü rahat hiss etməlidir. Kimsə divar boyunca dayanmaq istər, kimsə isə otağın ortasında gəzmək istəyər, amma hər kəs öz yerində olmalıdır. İşə başlayın və möhtəşəm interfeyslər yaradın!

Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION