Tkinter Çerçeve / Frame Kullanımı
Bu eğitimde Tkinter Çerçevesini ve boyutlar, dolgular ve kenarlıklar dahil niteliklerinin nasıl değiştirileceğini öğreneceksiniz.
Bu eğitimde Tkinter Çerçevesini ve boyutlar, dolgular ve kenarlıklar dahil niteliklerinin nasıl değiştirileceğini öğreneceksiniz.
Tkinter Frame'e Giriş
Çerçeve, basit bir dikdörtgen olarak görüntülenen bir widget'tır. Genellikle diğer widget'ları hem görsel olarak hem de kodlama düzeyinde düzenlemek için bir çerçeve kullanırsınız .
Bir çerçeve oluşturmak için sınıfı kullanırsınız ttk.Frame
:
frame = ttk.Frame(container, **options)
Kod dili: Python ( python )
Bir çerçevenin görünümünü belirleyen çeşitli yapılandırma nesneleri vardır.
borderwidth |
Çerçevenin kenarlık genişliğini belirtin. Varsayılan olarak sıfırdır |
class_ |
Widget sınıf adını ayarlayın |
cursor |
Fare imleci çerçevenin üzerindeyken imlecin görünümünü değiştirme |
height |
Çerçevenin yüksekliğini ayarlayın. |
padding |
Çerçevenin içinde ve içerilen widget'ların dışında dolgu oluşturmak için. |
relief |
Kenarlık için kabartma stilini belirtin. Etkili hale getirmek için ayrıca ayarlamanız gerekir borderwidth . |
style |
Özel widget özel stil adını belirtin |
takefocus |
Boole değeri, odak geçişi sırasında çerçevenin ziyaret edilip edilmediğini belirtir. Varsayılan olarak öyledir False . Yani çerçeve widget'ı odağı kabul etmiyor. |
width |
Çerçevenin genişliğini ayarlayın. |
Çerçeve boyutu
Bir çerçevenin boyutu, içerdiği widget'ların boyutuna ve düzenine göre belirlenir. Ayrıca, çerçeveyi oluştururken çerçevenin yüksekliğini ve genişliğini açıkça belirtebilirsiniz:
frame = ttk.Frame(container, height, width)
Kod dili: Python ( python )
Dolgu malzemesi
Dolgu, çerçevenin içine ve içerilen widget'ların dışına ekstra alan eklemenizi sağlar. Dolgular piksel cinsindendir.
Çerçevenin her iki tarafı için dolguyu ayrı ayrı belirtmek için aşağıdakileri kullanırsınız:
frame['padding'] = (left, top, right, bottom)
Kod dili: Python ( python )
Örneğin:
frame['padding'] = (5,10,5,10)
Kod dili: Python ( python )
Veya sol, sağ ve üst, alt için dolguları aşağıdaki gibi belirleyebilirsiniz:
frame['padding'] = (5, 10)
Kod dili: Python ( python )
Bu örnekte sol ve sağ dolgular 5, üst ve alt dolgular 10'dur. Tüm kenarların dolguları aynıysa dolguyu şu şekilde belirtebilirsiniz:
frame['padding'] = 5
Kod dili: Python ( python )
Çerçeve sınırları
Varsayılan olarak çerçevenin kenarlık genişliği sıfırdır. Başka bir deyişle çerçevenin kenarlığı yoktur.
Bir çerçeveye kenarlık ayarlamak için kenarlığın hem genişliğini hem de stilini ayarlamanız gerekir.
Çerçevenin kenarlığının genişliği piksel cinsindendir. Çerçevenin kenarlık stili düz, oluklu, yükseltilmiş, çıkıntılı, katı veya batık olabilir. Bir çerçevenin varsayılan kenarlık stili düzdür.
Aşağıdaki örnek, çerçevenin kenarlık genişliğini 5 piksele ve çerçevenin kenarlık stilini ise olarak ayarlar sunken
.
frame['borderwidth'] = 5
frame['relief'] = 'sunken'
Kod dili: Python ( python )
Aşağıdaki resimde bir çerçevenin kenarlık stilleri gösterilmektedir:

Tkinter Çerçeve örneği
Notepad gibi metin editörlerinde oldukça yaygın olan aşağıdaki Değiştir penceresini oluşturacağız:

Widget'ları daha düzenli hale getirmek için pencereyi iki çerçeveye bölebilirsiniz:
- Sol çerçeve Label , Entry ve Checkbox widget'larından oluşur. Sol çerçeve , iki sütun ve dört satırdan oluşan ızgara geometri yöneticisini kullanacaktır .
- Sağ çerçeve widget'lardan oluşur
Button
. Sağdaki çerçeve ayrıca dört satır ve bir sütundan oluşan ızgara geometri yöneticisini kullanacaktır.
Sol ve sağ çerçeveleri pencereye yerleştirmek için bir satır ve iki sütun içeren ızgara geometri yöneticisini kullanabilirsiniz:

Aşağıdaki program Replace
yukarıdaki pencerenin nasıl oluşturulacağını göstermektedir:
import tkinter as tk
from tkinter import TclError, ttk
def create_input_frame(container):
frame = ttk.Frame(container)
# grid layout for the input frame
frame.columnconfigure(0, weight=1)
frame.columnconfigure(0, weight=3)
# Find what
ttk.Label(frame, text='Find what:').grid(column=0, row=0, sticky=tk.W)
keyword = ttk.Entry(frame, width=30)
keyword.focus()
keyword.grid(column=1, row=0, sticky=tk.W)
# Replace with:
ttk.Label(frame, text='Replace with:').grid(column=0, row=1, sticky=tk.W)
replacement = ttk.Entry(frame, width=30)
replacement.grid(column=1, row=1, sticky=tk.W)
# Match Case checkbox
match_case = tk.StringVar()
match_case_check = ttk.Checkbutton(
frame,
text='Match case',
variable=match_case,
command=lambda: print(match_case.get()))
match_case_check.grid(column=0, row=2, sticky=tk.W)
# Wrap Around checkbox
wrap_around = tk.StringVar()
wrap_around_check = ttk.Checkbutton(
frame,
variable=wrap_around,
text='Wrap around',
command=lambda: print(wrap_around.get()))
wrap_around_check.grid(column=0, row=3, sticky=tk.W)
for widget in frame.winfo_children():
widget.grid(padx=5, pady=5)
return frame
def create_button_frame(container):
frame = ttk.Frame(container)
frame.columnconfigure(0, weight=1)
ttk.Button(frame, text='Find Next').grid(column=0, row=0)
ttk.Button(frame, text='Replace').grid(column=0, row=1)
ttk.Button(frame, text='Replace All').grid(column=0, row=2)
ttk.Button(frame, text='Cancel').grid(column=0, row=3)
for widget in frame.winfo_children():
widget.grid(padx=5, pady=5)
return frame
def create_main_window():
root = tk.Tk()
root.title('Replace')
root.resizable(0, 0)
try:
# windows only (remove the minimize/maximize button)
root.attributes('-toolwindow', True)
except TclError:
print('Not supported on your platform')
# layout on the root window
root.columnconfigure(0, weight=4)
root.columnconfigure(1, weight=1)
input_frame = create_input_frame(root)
input_frame.grid(column=0, row=0)
button_frame = create_button_frame(root)
button_frame.grid(column=1, row=0)
root.mainloop()
if __name__ == "__main__":
create_main_window()
Kod dili: Python ( python )
Nasıl çalışır.
tkinter
İlk önce modülü ve alt modülü içe aktarın tkinter.ttk
:
import tkinter as tk
from tkinter import ttk
Kod dili: JavaScript ( javascript )
İkinci olarak, fonksiyonda sol çerçeveyi oluşturun create_input_frame()
. Aşağıdaki kod, input_frame içindeki tüm widget'lara dolgular ekler:
for widget in frame.winfo_children():
widget.grid(padx=0, pady=5)
Üçüncü olarak, create_button_frame() işlevinde doğru çerçeveyi oluşturun.
Dördüncüsü, fonksiyonda kök pencereyi oluşturun create_main_window()
. Aşağıdaki kod simge durumuna küçültme/büyütme düğmelerini pencereden kaldırır:
root.attributes('-toolwindow', True)
Kod dili: PHP ( php )
Bu kodun yalnızca Windows'ta çalıştığını unutmayın.
Fonksiyonda create_main_window()
ayrıca sol çerçeveyi ve sağ çerçeveyi oluşturuyoruz ve bunları kök pencerede düzenlemek için ızgara geometri yöneticisini kullanıyoruz.
Son olarak blokta create_main_window() fonksiyonunu çağırın if __name__ == "__main__":
.
Tkinter'da bir Çerçevenin genişliği dinamik olarak nasıl değiştirilir?
Örnek
Bu örnekte, ana pencerenin içine sıkıştırılmış bir düğme oluşturduk ve düğmeyi her tıklattığımızda çerçevenin genişliğini güncelleyecek.
# Import the required libraries from tkinter import * from tkinter import ttk # Create an instance of tkinter frame or window win=Tk() # Set the size of the window win.geometry("700x350") def update_width(): frame.config(width=100) # Create a frame frame=Frame(win, bg="skyblue3", width=700, height=250) frame.pack() # Add a button in the main window ttk.Button(win, text="Update", command=update_width).pack() win.mainloop()
Çıktı
Çerçeve widget'ı ve düğme içeren bir pencere görüntülemek için yukarıdaki kodu çalıştırın.
Çerçevenin genişliğini güncellemek için "Güncelle" düğmesini tıklayın.
Özet
- A
ttk.Frame
, diğer widget'ları tutabilen basit bir dikdörtgen widget'tır. - Tkinter çerçeveleri kullanıcı arayüzlerini görsel olarak ve kodlama düzeyinde düzenlemek için kullanılır.
Kaynak