Ctrl + S Tuşuna Basınca 2 Fonksiyon Çalıştırma

Hepinize selamlar,

Öncelikle bir ekranımızın olduğunu düşünelim:

Ekran = Tk()
Ekran.title("Ekran")

Şimdi,kaydetme tuşu ekleyelim:

kaydetme_tuşu = Button (text = "Kaydet", command = Kaydetme)
kaydetme_tuşu.pack()

Ve şimdi bir fonksiyon:

def Kaydetme():
    pass

Evet,bu kadardı.Şimdi sorunlarımı yazayım:

1)“Ctrl + S” tuşuna basılmadığı zaman (Hani kod editörlerinde “*” eklenir ya) "kaydetme_tuşu"nun text’ini “Kaydet” yapmak,

2)Uygulama açık iken eğer “Ctrl + S” tuşuna basarsak “kaydetme_tuşu” nun text’ini “Kaydedildi!” yapmak

3)Tekrar 1. soruna geçmek

Yardım edebilir misiniz?

Aşağıdaki kodları inceleyin isterseniz.

import tkinter as tk

root = tk.Tk()

button = tk.Button(master=root, text="Kaydet")
button.pack()
 
root.bind(
    sequence="<Control-s>", 
    func=lambda event: button.configure(text="Kaydedildi")
)
root.bind(
    sequence="<Control-S>", 
    func=lambda event: button.configure(text="Kaydedildi")
)
root.bind(
    sequence="<KeyRelease>", 
    func=lambda event: button.configure(text="Kaydet")
)
root.mainloop()
1 Beğeni

Yukarıdaki <KeyRelease> sekansı siz ctrl+s'ye bastıktan sonra herhangi bir tuşa basıp sonra da tuşu serbest bırakırsanız da devreye girer. Eğer bu durumu ortadan kaldırmak istiyorsanız, yani sadece ctrl+s tuşlarına bastıktan sonra bu tuşlardan herhangi birisi serbest kaldığında button text yazısının Kaydet şeklinde değişmesini istiyorsanız, bind ayarlarınızı şu şekilde değiştirebilirsiniz:

root.bind(
    sequence=f"<Control-s>", 
    func=lambda event: button.configure(text="Kaydedildi")
)
root.bind(
    sequence=f"<Control-S>", 
    func=lambda event: button.configure(text="Kaydedildi")
)
root.bind(
    sequence=f"<KeyRelease-s>", 
    func=lambda event: button.configure(text="Kaydet")
)
root.bind(
    sequence=f"<KeyRelease-S>", 
    func=lambda event: button.configure(text="Kaydet")
)
root.bind(
    sequence=f"<KeyRelease-Control_L>", 
    func=lambda event: button.configure(text="Kaydet")
)
root.bind(
    sequence=f"<KeyRelease-Control_R>", 
    func=lambda event: button.configure(text="Kaydet")
)
1 Beğeni