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'] = 5Kod 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 / Frame Kullanımı

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:

Tkinter Çerçeve / Frame Kullanımı

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:

Tkinter Çerçeve / Frame Kullanımı

Aşağıdaki program Replaceyukarı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 ttkKod 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.

Tkinter Çerçeve / Frame Kullanımı

Çerçevenin genişliğini güncellemek için "Güncelle" düğmesini tıklayın.

Tkinter Çerçeve / Frame Kullanımı

 
 

Ö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

Yorumunuzu Ekleyin


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