Kivy butonlarını nasıl kontrol edebilirim?

self.alfabe=['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'İ', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z','Random']
    for i in self.alfabe:
        self.harfler=Button(text=i)
        self.englishDuzen.add_widget(self.harfler)
        self.harfler.bind(on_press=self.harfpress)

herkese merhaba kivy ile basit bir program yazmak istiyorum.

Harfleri bu şekilde gridlayout düzeni ile yazdırdım ama bu eklediğim butonları nasıl kontrol edebileceğimi bulamadım ve hiçbir şey aklıma gelmedi, foruma yazmaya karar verdim.

yapmak istediğim şey örneğin A butonuna basıldığı zaman dosyadan A harfi ile başlayan ingilizce kelimeleri okutmak. Aynı şekilde diğer harfler için de aynısı yapmak istiyorum.

şimdiden çok teşekkür ederim :slight_smile:

Aslında yapmak istediğim şey bu ama daha kısa bir yoldan yapamaz mıyım?

    self.A = Button(text="A")
    self.A.bind(on_press=self.Apress)
    self.B = Button(text="B")
    self.B.bind(on_press=self.Bpress)
    self.C = Button(text="C")
    self.C.bind(on_press=self.Cpress)
    self.D = Button(text="D")
    self.D.bind(on_press=self.Dpress)
    self.E = Button(text="E")
    self.E.bind(on_press=self.Epress)
    self.F = Button(text="F")
    self.F.bind(on_press=self.Fpress)
    self.G = Button(text="G")
    self.G.bind(on_press=self.Gpress)
    self.H = Button(text="H")
    self.H.bind(on_press=self.Hpress)
    self.I = Button(text="I")
    self.I.bind(on_press=self.Ipress)
    self.J = Button(text="J")
    self.J.bind(on_press=self.Jpress)
    self.K = Button(text="K")
    self.K.bind(on_press=self.Kpress)
    self.L = Button(text="L")
    self.L.bind(on_press=self.Lpress)
    self.M = Button(text="M")
    self.M.bind(on_press=self.Mpress)
    self.N = Button(text="N")
    self.N.bind(on_press=self.Npress)
    self.O = Button(text="O")
    self.O.bind(on_press=self.Opress)
    self.P = Button(text="P")
    self.P.bind(on_press=self.Ppress)
    self.Q = Button(text="Q")
    self.Q.bind(on_press=self.Qpress)
    self.R = Button(text="R")
    self.R.bind(on_press=self.Rpress)
    self.S = Button(text="S")
    self.S.bind(on_press=self.Spress)
    self.T = Button(text="T")
    self.T.bind(on_press=self.Tpress)
    self.U = Button(text="U")
    self.U.bind(on_press=self.Upress)
    self.V = Button(text="V")
    self.V.bind(on_press=self.Vpress)
    self.W = Button(text="W")
    self.W.bind(on_press=self.Wpress)
    self.X = Button(text="X")
    self.X.bind(on_press=self.Xpress)
    self.Y = Button(text="Y")
    self.Y.bind(on_press=self.Ypress)
    self.Z = Button(text="Z")
    self.Z.bind(on_press=self.Zpress)

    self.englishDuzen.add_widget(self.A)
    self.englishDuzen.add_widget(self.B)
    self.englishDuzen.add_widget(self.C)
    self.englishDuzen.add_widget(self.D)
    self.englishDuzen.add_widget(self.E)
    self.englishDuzen.add_widget(self.F)
    self.englishDuzen.add_widget(self.G)
    self.englishDuzen.add_widget(self.H)
    self.englishDuzen.add_widget(self.I)
    self.englishDuzen.add_widget(self.J)
    self.englishDuzen.add_widget(self.K)
    self.englishDuzen.add_widget(self.L)
    self.englishDuzen.add_widget(self.M)
    self.englishDuzen.add_widget(self.N)
    self.englishDuzen.add_widget(self.O)
    self.englishDuzen.add_widget(self.P)
    self.englishDuzen.add_widget(self.Q)
    self.englishDuzen.add_widget(self.R)
    self.englishDuzen.add_widget(self.S)
    self.englishDuzen.add_widget(self.T)
    self.englishDuzen.add_widget(self.U)
    self.englishDuzen.add_widget(self.V)
    self.englishDuzen.add_widget(self.W)
    self.englishDuzen.add_widget(self.X)
    self.englishDuzen.add_widget(self.Y)
    self.englishDuzen.add_widget(self.Z)


def Apress(self,nesne):
    pass

def Bpress(self,nesne):
    pass
def Cpress(self,nesne):
    pass

def Dpress(self,nesne):
    pass
def Epress(self,nesne):
    pass

def Fpress(self,nesne):
    pass
def Gpress(self,nesne):
    pass
def Hpress(self,nesne):
    pass
def Ipress(self,nesne):
    pass

def Jpress(self,nesne):
    pass
def Kpress(self,nesne):
    pass

def Lpress(self,nesne):
    pass
def Mpress(self,nesne):
    pass

def Npress(self,nesne):
    pass
def Opress(self,nesne):
    pass

def Ppress(self,nesne):
    pass
def Qpress(self,nesne):
    pass

def Rpress(self,nesne):
    pass
def Spress(self,nesne):
    pass

def Tpress(self,nesne):
    pass
def Upress(self,nesne):
    pass

def Vpress(self,nesne):
    pass
def Ypress(self,nesne):
    pass

def Xpress(self,nesne):
    pass
def Wpress(self,nesne):
    pass

def Zpress(self,nesne):
    pass

self.Apress, self.Bpress gibi fonksiyonların yaptığı işler arasında bir benzerlik var mı?

Butonlar ayrı değişkenlerde tutulmak yerine bir listede tutulup döngü ile self.englishDuzen’e eklenebilir.


Soruya tekrar bakınca yaptığınızı gördüm.

evet Apress ve Bpress birbirlerinden farklı,A butonuna tıkladığı zaman A.txt dosyasını açıp A ile başlayan ingilizce kelimeleri okumaya başlıyor. B butonuna tıklandığı zaman da B ile başlayan kelimeleri okumaya başlıyor. Cevap yazdığınız için teşekkür ederim.

Kivy bilmiyorum, bu fonksiyonlar çağırıldığında basılan buton da parametre olarak veriliyor mu? Eğer öyleyse butonda yazılan metne erişip ona göre işlem yapabilirsiniz. Bu sayede bütün butonlar aynı fonksiyonu çağırabilir.

Ben de öyle yapmak istedim ama bulamadım nasıl butona erişebileceğimi. Sanırım en mantıklısı bu şekil de uzun kodlamak.

Burada dediğine göre ikinci parametre (sizin kodunuzda nesne parametresi) butonun kendisi.

En kötü fonksiyonları döngü içinde oluştururuz, ortada benzer bir işlem yapan fonksiyonlar varken hepsini teker teker yazmak yanlış.

Çok teşekkür ederim nasıl yapacağımı anladım, yeni öğreniyorum aklıma kısa yol gelmediği zaman da hep uzun yoldan yapmaya çalışıyorum, döngülere tekrar çalışmalıyım heralde. Yardım ettiğiniz için çok teşeşkkür ederim , iyi çalışmalar size de :slight_smile:

bu şekilde yaptım ve buton.text ile de tektek butonlara erişebiliyorum, tekrar teşekkür ederim :slight_smile:

self.alfabe=[‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘G’, ‘H’, ‘İ’, ‘J’, ‘K’, ‘L’, ‘M’, ‘N’, ‘O’, ‘P’, ‘Q’, ‘R’, ‘S’, ‘T’, ‘U’, ‘V’, ‘W’, ‘X’, ‘Y’, ‘Z’,‘Random’]

    for i in self.alfabe:
        self.harfler=Button(text="{}".format(i),on_press=self.harfPress)
        self.englishDuzen.add_widget(self.harfler)


def harfPress(self,button):
    if button.text=="A":
        with open("englishTxt\\A.txt", "r") as self.englishwords:
            for i in self.englishwords.readlines():
                engine.say(i)
                engine.runAndWait()
                time.sleep(1)