.tk.call ile bir tkinter objesi üzerinden alttaki Tcl interpreter’i ile direkt iletişime geçebiliyorsunuz. Paslanan argümanlar Tcl komutu gibi algılanıyor. Sizdeki örnekte
Returns the current Tk windowing system, one of x11 (X11-based), win32 (MS Windows), classic (Mac OS Classic), or aqua (Mac OS X Aqua).
Dolayısıyla alttaki pencereleme sisteminin Mac OS X Aqua olup olmamasına göre değişik işler yapılıyor. Öyleyse, “mouse’taki orta tık” ile “CTRL+mouse’taki sol tık” olaylarına menü açma fonksiyonu .bind ediliyor; değilse “mouse’taki sağ tık” olayına menü açma fonksiyonu bağlanıyor (menü açma fonksiyonu tekrar edilmiş o açıdan iyi bir kod değil).
Bu arada root üzerinden veya menu üzerinden çağrılması bir fark oluşturmuyor; maksat oraya ulaşmak:
.bind'ın dokümantasyonuna bakarsak (help(root.bind) ile görülebilir)
Signature: root.bind(sequence=None, func=None, add=None)
Docstring:
Bind to this widget at event SEQUENCE a call to function FUNC.
...
FUNC will be called if the event sequence occurs with an
instance of Event as argument.
İlk pasladığınız argüman "olay"dır, yani “event”. Bu event gerçekleştiğinde (örneğin mouse’taki sağ tıka basmak) ikinci argüman func çağrılır; bu fonksiyona da bir olay objesi (tk.Event class’ının) paslanıyor. Dolayısıyla e de onu temsil ediyor. Bu obje size olayla ilgili bilgiler verebilir, örneğin burada e.x_root ile olayın (mouse’a tıklama) gerçekleştiği pozisyonun (ekrana göre) x koordinatını elde ediyoruz (sonra da orada menü açılıyor mesela).