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
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
bu şekilde yaptım ve buton.text ile de tektek butonlara erişebiliyorum, tekrar teşekkür ederim
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)