Tkinter Pack Kullanımı

Bu eğitimde, Tkinter geometri yöneticisini ve onu bir penceredeki widget'ları düzenlemek için nasıl kullanacağınızı öğreneceksiniz .

Tkinter paket geometri yöneticisine giriş

pack()Şu ana kadar bir pencereye widget ekleme yöntemini nasıl kullanacağınızı öğrendiniz .

Tkinter, bir penceredeki widget'ları düzenlemek için geometri yöneticisini kullanır. Yöntem pack(), Tkinter'deki üç geometri yöneticisinden biridir. Diğer geometri yöneticileri grid()ve'dir place().

Paket, kaplarının kenarlarına widget'lar yerleştirir. Kap kök pencere veya çerçeve olabilir .

Her seçeneği daha iyi anlamak için basit bir programla başlayalım.

Tkinter paketi geometri yöneticisi örneği

Geometri yöneticisinin packbirçok konfigürasyonu vardır. En sık kullanılan seçenekler şunlardır: fill, expand, side, anchor, ipadx, ipady, padx, ve pady.

1) Varsayılan seçeneklerle paketleyin

Aşağıda, kök pencerede iki Labelpack widget'ını düzenlemek için geometri yöneticisinin nasıl kullanılacağı gösterilmektedir :

import tkinter as tk

root = tk.Tk()
root.title('Pack Demo')
root.geometry("350x200")

# box 1
box1 = tk.Label(root, text="Box 1", bg="green", fg="white")
box1.pack()

# box 2
box2 = tk.Label(root, text="Box 2", bg="red", fg="white")
box2.pack()

root.mainloop()Kod dili:  PHP  ( php )
Tkinter Pack Kullanımı

Bu örnekte iki kutumuz var: yeşil ve kırmızı. pack()Varsayılan seçenekleri kullandığı için kutuları üst üste yerleştirir .

Diğer seçeneklere geçmeden önce pencerenin koordinatlarını xve koordinatlarını anlamanız gerekir :y

Tkinter Pack Kullanımı

Pencerenin sol üst köşesi koordinatlı başlangıç ??noktasıdır (0,0). X koordinatı soldan sağa doğru artarken, y koordinatı yukarıdan aşağıya doğru artar.

2) ipadx ve ipady: dahili dolguların ayarlanması

ipadxWidget'lara yönelik dahili dolgular oluşturmak için ve parametrelerini kullanırsınız ipady:

  • ipadxsola ve sağa dolgu veya x ekseni boyunca dolgu oluşturur.
  • ipadyüstte ve altta dolgu veya y ekseni boyunca dolgu oluşturur.

Örneğin, aşağıdaki program her kutunun iç dolgularını ayarlamak için ipadxve parametrelerini kullanır:ipady

import tkinter as tk

root = tk.Tk()
root.title('Pack Demo')
root.geometry("350x200")

# box 1
box1 = tk.Label(root, text="Box 1", bg="green", fg="white")
box1.pack(ipadx=10, ipady=10)

# box 2
box2 = tk.Label(root, text="Box 2", bg="red", fg="white")
box2.pack(ipadx=10, ipady=10)

root.mainloop()Kod dili:  Python  ( python )

Çıktı:

Tkinter Pack Kullanımı

3) Doldurma seçeneğini kullanma

Bu fillseçenek, modülde tanımlanan üç dize sabitinden birini kabul eder tkinter.

  • tkinter.X– x ekseni boyunca mevcut alanı doldurun
  • tkinter.Y– y ekseni boyunca mevcut alanı doldurun
  • tkinter.BOTH– her iki eksen boyunca mevcut alanı doldurun

'x'Bu dize sabitleri , 'y've'ye eşdeğerdir 'both'.

tkinterModülü olarak içe aktarırsanız tk, , sabitlerine referans vermeniz ve örneğin , , ve önekini kullanmanız gerektiğini Xunutmayın .YBOTHtktk.Xtk.Ytk.BOTH

Aşağıdaki örnek, fillilk etiket seçeneğini ayarlamak için fill parametresini kullanır:

box1.pack(ipadx=20, ipady=20, fill=tk.X)Kod dili:  Python  ( python )

… widget'ın x ekseni boyunca mevcut tüm alanı doldurduğunu göreceksiniz:

Tkinter Pack Kullanımı

Ancak aşağıdaki şekilde değiştirirseniz fill=tk.Y:

box1.pack(ipadx=20,ipady=20,fill=tk.Y)Kod dili:  Python  ( python )

… ilk widget'ın tüm boşlukları dikey olarak doldurmadığını göreceksiniz:

Tkinter Pack Kullanımı

Bunun nedeni, packaşağıdaki resimde vurgulandığı gibi her widget'a alan ayırmasıdır:

Tkinter Pack Kullanımı

Bu seçeneği kullandığınızda fill, her widget'ın doldurabileceği alan, kendilerine tahsis edilen alanlarla sınırlandırılır.

4) Genişletme seçeneğinin kullanılması

Bu expandseçenek, widget'a daha fazla kullanılabilir alan ayırır. expandSeçeneği ilk widget'a eklerseniz :

box1.pack(ipadx=20,ipady=20,expand=True)Kod dili:  Python  ( python )

…aşağıdaki çıktıyı alacaksınız:

Tkinter Pack Kullanımı

Bu örnekte, ilk widget, ikinci widget'a ayrılan alan dışında penceredeki tüm kullanılabilir alanı kaplar.

İlk widget'ın seçeneği olmadığından filltahsis edilen alanın ortasında yüzer.

fillİlk widget'ın seçeneğini şu şekilde ayarlarsanız tk.BOTH:

box1.pack(ipadx=20, ipady=20, fill=tk.BOTH, expand=True)Kod dili:  Python  ( python )

…ilk widget'ın kendisine ayrılan alanın tamamını doldurduğunu göreceksiniz:

Tkinter Pack Kullanımı

expandSeçeneği her iki widget'a da eklerseniz , packyönetici alanı onlara eşit olarak tahsis edecektir. Örneğin:

import tkinter as tk

root = tk.Tk()
root.title('Pack Demo')
root.geometry("350x200")

# box 1
box1 = tk.Label(root, text="Box 1", bg="green", fg="white")
box1.pack(ipadx=20, ipady=20, fill=tk.BOTH, expand=True)

# box 2
box2 = tk.Label(root, text="Box 2", bg="red", fg="white")
box2.pack(ipadx=20, ipady=20, expand=True)

root.mainloop()Kod dili:  Python  ( python )

Çıktı:

Tkinter Pack Kullanımı

İkinci widget'ın bu seçeneğe sahip olmadığından ayrılan alanın tamamını kullanmadığına dikkat edin fill.

expandTüm widget'lar için ayarını yaptığınızda True, packgeometri yöneticisi boşlukları onlara eşit şekilde tahsis edecektir. Ancak bu yalnızca tüm widget'ların aynı side.

5) Bağlantı seçeneğini kullanma

anchorWidget'ı ayrılan alanın kenarına sabitlemenize olanak tanır . Aşağıdaki değerlerden birini kabul eder:

Yapışkan Tanım
N Kuzey veya Üst Merkez
S Güney veya Alt Merkez
e Doğu veya Sağ Merkez
K Batı veya Sol Merkez
Kuzeybatı Kuzey Batı veya Sol Üst
kuzeydoğu Kuzey Doğu veya Sağ Üst
GD Güney Doğu veya Sağ Alt
GB Güney Batı veya Sol Alt
MERKEZ Merkez

Aşağıdaki resimde bağlantı seçenekleri gösterilmektedir:

Tkinter Pack Kullanımı

EÖrneğin, aşağıdaki program, bağlantıların ve bağlantıların kullanıldığı widget'ları gösterir W:

import tkinter as tk

root = tk.Tk()
root.title('Pack Demo')
root.geometry("350x200")

# box 1
box1 = tk.Label(root, text="Box 1", bg="green", fg="white")
box1.pack(ipadx=20, ipady=20, anchor=tk.E,  expand=True)

# box 2
box2 = tk.Label(root, text="Box 2", bg="red", fg="white")
box2.pack(ipadx=20, ipady=20, anchor=tk.W, expand=True)


root.mainloop()Kod dili:  PHP  ( php )

Çıktı:

Tkinter Pack Kullanımı

6) Yan seçeneğin kullanılması

Bu sideseçenek widget'ın hizalamasını belirtir:

  • tkinter.TOP
  • tkinter.LEFT
  • tkinter.RIGHT
  • tkinter.BOTTOM

'left'Bunlar , 'top', 'right've ile eşdeğerdir 'bottom'.

Varsayılanlar sideolarak TOP. Başka bir deyişle, widget'lar kapsayıcılarının üst kısmına hizalanır.

Aşağıdaki örnek, sideilk widget'ın değerini şu şekilde ayarlar tkinter.LEFT:

import tkinter as tk

root = tk.Tk()
root.title('Pack Demo')
root.geometry("350x200")

# box 1
box1 = tk.Label(root, text="Box 1", bg="green", fg="white")
box1.pack(ipadx=20, ipady=20, fill=tk.BOTH, expand=True, side=tk.LEFT)

# box 2
box2 = tk.Label(root, text="Box 2", bg="red", fg="white")
box2.pack(ipadx=20, ipady=20, fill=tk.BOTH, expand=True)

root.mainloop()Kod dili:  Python  ( python )

Çıktı:

Tkinter Pack Kullanımı

Bu örnekte expandseçenek beklediğiniz gibi çalışmayabilir. Bunun nedeni widget'ların farklı taraflarının olmasıdır.

Alanlarını yeniden daha da güzelleştirmek için şunları yapabilirsiniz:

  • sideHer iki widget'ın da ayarını şu şekilde yapın:'left'
  • Veya bir widget'in kenarını olarak 'left've diğer widget'in kenarını da olarak ayarlayın 'right'.

Örneğin:

import tkinter as tk

root = tk.Tk()
root.title('Pack Demo')
root.geometry("350x200")

# box 1
box1 = tk.Label(root, text="Box 1", bg="green", fg="white")
box1.pack(ipadx=20, ipady=20, fill=tk.BOTH, expand=True, side=tk.LEFT)

# box 2
box2 = tk.Label(root, text="Box 2", bg="red", fg="white")
box2.pack(ipadx=20, ipady=20, fill=tk.BOTH, expand=True, side=tk.RIGHT)

root.mainloop()Kod dili:  Python  ( python )

Çıktı:

Tkinter Pack Kullanımı

6) padx ve pady: harici dolguları ayarlayın

padxWidget'ların dış dolgularını ayarlamak için ve parametrelerini kullanırsınız pady:

  • padx– x ekseni boyunca mevcut alanı doldurun
  • pady– y ekseni boyunca mevcut alanı doldurun

Örneğin:

import tkinter as tk

root = tk.Tk()
root.title('Pack Demo')
root.geometry("350x200")

# box 1
box1 = tk.Label(root, text="Box 1", bg="green", fg="white")
box1.pack(ipadx=20, ipady=20, padx=20, pady=20,
          fill=tk.BOTH, expand=True)

# box 2
box2 = tk.Label(root, text="Box 2", bg="red", fg="white")
box2.pack(ipadx=20, ipady=20, padx=20, pady=20,
          fill=tk.BOTH, expand=True)

root.mainloop()Kod dili:  PHP  ( php )

Çıktı:

Tkinter Pack Kullanımı

Paket geometri yöneticisi ne zaman kullanılmalı?

Paket geometri yöneticisi aşağıdakiler için uygundur:

  • Widget'ları yukarıdan aşağıya bir düzende yerleştirme.
  • Widget'ları yan yana yerleştirme düzeni.

Aşağıdaki örneğe bakın:

import tkinter as tk
from tkinter import ttk

root = tk.Tk()
root.title('Pack Demo')
root.geometry("300x200")

ipadding = {'ipadx': 10, 'ipady': 10}

# place widgets top down
label1 = tk.Label(root, text='Box 1', bg="red", fg="white")
label1.pack(**ipadding, fill=tk.X)

label2 = tk.Label(root, text='Box 2', bg="green", fg="white")
label2.pack(**ipadding, fill=tk.X)

label3 = tk.Label(root, text='Box 3', bg="blue", fg="white")
label3.pack(**ipadding, fill=tk.X)

# place widgets side by side
label4 = tk.Label(root, text='Left', bg="cyan", fg="black")
label4.pack(**ipadding, expand=True, fill=tk.BOTH, side=tk.LEFT)

label5 = tk.Label(root, text='Center', bg="magenta", fg="black")
label5.pack(**ipadding, expand=True, fill=tk.BOTH, side=tk.LEFT)

label6 = tk.Label(root, text='Right', bg="yellow", fg="black")
label6.pack(**ipadding, expand=True, fill=tk.BOTH, side=tk.LEFT)

root.mainloop()Kod dili:  Python  ( python )

Çıktı:

Tkinter Pack Kullanımı

Oturum açma formu örneği oluşturmak için paketi kullanma

Aşağıdaki örnek, bir oturum açma formu oluşturmak için pack() yöntemini kullanır:

import tkinter as tk
from tkinter import ttk

root = tk.Tk()
root.title('Login')
root.geometry("350x220")


fields = {}

fields['username_label'] = ttk.Label(text='Username:')
fields['username'] = ttk.Entry()

fields['password_label'] = ttk.Label(text='Password:')
fields['password'] = ttk.Entry(show="*")


for field in fields.values():
    field.pack(anchor=tk.W, padx=10, pady=5, fill=tk.X)

ttk.Button(text='Login').pack(anchor=tk.W, padx=10, pady=5)

root.mainloop()
Kod dili:  JavaScript  ( javascript )

Çıktı:

Tkinter Pack Kullanımı

Nasıl çalışır.

İlk olarak, widget'ları depolamak için bir sözlük başlatın:

fields = {}

İkinci olarak, Etiket ve Giriş widget'larını oluşturun:

fields['username_label'] = ttk.Label(text='Username:')
fields['username'] = ttk.Entry()

fields['password_label'] = ttk.Label(text='Password:')
fields['password'] = ttk.Entry(show="*")Kod dili:  JavaScript  ( javascript )

Üçüncüsü, widget'ları yineleyin ve paketleyin:

for field in fields.values():
    field.pack(anchor=tk.W, padx=10, pady=5, fill=tk.X)

Son olarak giriş butonunu ekleyin:

ttk.Button(text='Login').pack(anchor=tk.W, padx=10, pady=5)Kod dili:  JavaScript  ( javascript )

Özet

  • Widget'ları yukarıdan aşağıya veya yan yana düzenlemek için Tkinter paketi geometri yöneticisini kullanın.
  • Widget'ların nasıl düzenleneceğini kontrol etmek için paket geometri yöneticisinin fill, expandve seçeneklerini kullanın .side
Yorumunuzu Ekleyin


Yükleniyor...
Yükleniyor...