Tkinter Command Binding /Tkinter Komut Bağlaması

Bu eğitimde, bir geri aramayı bir widget olayıyla ilişkilendiren Tkinter komut bağlamasını öğreneceksiniz.

Tkinter komut bağlamasına giriş

Uygulamayı daha etkileşimli hale getirmek için widget'ların aşağıdaki gibi olaylara yanıt vermesi gerekir:

  • Fare tıklamaları
  • Tuşlara basılması

Bu, belirli bir olaya geri arama işlevi atanmasını gerektirir. Olay meydana geldiğinde, olayı işlemek için otomatik olarak geri arama başlatılacaktır.

Tkinter'da bazı widget'lar, komut bağlamayı kullanarak bir geri çağırma işlevini bir olayla ilişkilendirmenize olanak tanır.

Bu, widget'ın komut seçeneğine bir fonksiyonun adını atayabileceğiniz anlamına gelir, böylece widget'te olay meydana geldiğinde fonksiyon otomatik olarak çağrılır.

Komut bağlamayı kullanmak için şu adımları izleyin:

  • İlk olarak, bir işlevi geri arama olarak tanımlayın.
  • Ardından, fonksiyonun adını commandwidget'ın seçeneğine atayın.

Örneğin, aşağıda adı verilen bir işlev tanımlanır button_clicked():

def button_clicked():
    print('Button clicked')Kod dili:  Python  ( python )

commandBundan sonra, işlevi bir düğme widget'ının seçeneğiyle ilişkilendirebilirsiniz :

ttk.Button(root, text='Click Me',command=button_clicked)Kod dili:  Python  ( python )

()Seçenek içinde geri aramayı parantez olmadan ilettiğinizi unutmayın command. Aksi takdirde, program çalıştırılır çalıştırılmaz geri arama çağrılacaktır.

button_clickedGeri çağırma fonksiyonunun widget ile nasıl ilişkilendirileceğini gösteren programın tamamı aşağıdadır Button:

import tkinter as tk
from tkinter import ttk

root = tk.Tk()


def button_clicked():
    print('Button clicked')


button = ttk.Button(root, text='Click Me', command=button_clicked)
button.pack()

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

Tkinter düğmesi komut argümanları

Argümanları bir geri çağırma işlevine iletmek istiyorsanız lambda ifadesini kullanabilirsiniz .

Öncelikle argümanları kabul eden bir fonksiyon tanımlayın:

def callback_function(args):
    # do somethingKod dili:  Python  ( python )

Daha sonra bir lambda ifadesi tanımlayın ve onu seçeneğe atayın command. Lambda ifadesinin içinde geri çağırma işlevini çağırın:

ttk.Button(
    root,
    text='Button',
    command=lambda: callback(args))Kod dili:  Python  ( python )

Aşağıdaki program, düğme komutuyla ilişkili geri çağırma işlevine bir argümanın nasıl iletileceğini gösterir:

import tkinter as tk
from tkinter import ttk

root = tk.Tk()


def select(option):
    print(option)


ttk.Button(root, text='Rock', command=lambda: select('Rock')).pack()
ttk.Button(root, text='Paper',command=lambda: select('Paper')).pack()
ttk.Button(root, text='Scissors', command=lambda: select('Scissors')).pack()

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

Bir düğmeye tıkladığınızda, o düğmenin komutuna bağlı lamda ifadesi yürütülür. İşlevi çağıracak select()ve ona bir dize argümanı iletecektir.

Komut bağlamanın sınırlamaları

Öncelikle bu commandseçenek tüm widget'larda mevcut değildir. ButtonBu ve diğer bazı widget'larla sınırlıdır .

İkinci olarak, commanddüğme sol tıklamaya ve geri tuşuna bağlanır. Anahtara bağlı değil Return.

Bunu kontrol etmek için odağı yukarıdaki programdaki bir düğmeye taşıyabilir ve geri tuşuna ve geri dönüş tuşlarına basabilirsiniz. Bu gerçekten kullanıcı dostu değil. Ne yazık ki fonksiyonun bağlamasını kolayca değiştiremezsiniz command.

Bu sınırlamaların üstesinden gelmek için Tkinter, bir işlevi bir olayla ilişkilendirmek için olay bağlama adı verilen alternatif bir yol sağlar .

Özet

  • Bir widget'ın seçeneğine bir işlev adı atamak, commandTkinter'da komut bağlama olarak adlandırılır.
  • Atanan işlev, widget üzerinde ilgili olay meydana geldiğinde otomatik olarak çağrılacaktır.
  • Yalnızca birkaç widget bu commandseçeneği destekler.

Kaynak

Yorumunuzu Ekleyin


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