Kivy'de düğmeye tıklandığında yukarıya yazmak

Dügmeye tıkladıgım da yukarıya yazmasını istiyorum ama hata veriyor.

main.py

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout 

class main2(BoxLayout):
	def bas(self, dgr):
		self.root.ids.btn.text = dgr

class main(App):
	def build(self):
		return main2()

if __name__ == "__main__":
	main().run()

main.kv

<main2>:
	orientation: "vertical"
	Button:
		id: btn
	Button:
		text: "Merhaba Yaz"
		on_press: root.bas("Merhaba")
[code]
# Kodlarınızı bu aralığa yazabilir misiniz?
[/code]

girintilemede bir hata yok

Yazarken girintilemede hata yapmamış olabilirsiniz ama birisi yazdığınız kodları kopyalamaya çalıştığında girintileri kopyalayamayacaktır.

Kopyala yapıştır yapmadım :slight_smile:


main.py

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout 

class main2(BoxLayout):
	def bas(self, dgr):
		self.root.ids.btn.text = dgr

class main(App):
	def build(self):
		return main2()
if __name__ == "__main__":
	main().run()


main.kv

<main2>:
	orientation: "vertical"
	Button:
		id: btn
	Button:
		text: "Merhaba Yaz"
		on_press: root.bas("Merhaba")

kv dosyasını yuklemeniz lazım.

Eger kv lang ı tek bir Scriptte kullanmak istiyorsaniz;

from kivy.lang import Builder
Builder.load_string(yukleyecegin_kv_stringi)

Ornek


from kivy.app import App
from kivy.uix.boxlayout import BoxLayout 
from kivy.lang import Builder

kv = """
<main2>:
	orientation: "vertical"
	Button:
		id: btn
	Button:
		text: "Merhaba Yaz"
		on_press: root.bas(btn,"Merhaba") #btn adli degisken bizim btn idli Button sınıfımız,o yuzden bas fonksiyonuna boyle bir parametre verdim
"""




class main2(BoxLayout):
	def bas(self, nesne, dgr):
		nesne.text = dgr     #buradaki nesne,yukarıdaki btn idli Button sınıfı icin,yani nesne burada btn idli Button sınıfı oluyor.iste bu sınıfın text niteligini burada degistirebiliyorum.

class main(App):
	def build(self):
		Builder.load_string(kv) #ayriyeten kv stringi yuklenmemis,onu bi yuklemelisiniz once.
		return main2()
if __name__ == "__main__":
	main().run()

Eger kv adlı yeni bir dosya olusturup bu dosyayı yuklemek isterseniz;

from kivy.lang import Builder
Builder.load_file("yukleyecegin_kv_dosyası") #Not: eger bu kv dosyası script dosyasıyla aynı dizinde degilse dizin belirtilmeli

Ornek:

from kivy.lang import Builder
Builder.load_string(yukleyecegin_kv_stringi)

Ornek:

benim_kv_dosyam.kv

<main2>:
	orientation: "vertical"
	Button:
		id: btn
	Button:
		text: "Merhaba Yaz"
		on_press: root.bas(btn,"Merhaba") #btn adli degisken bizim btn idli Button sınıfımız,o yuzden bas fonksiyonuna boyle bir parametre verdim

main.py


from kivy.app import App
from kivy.uix.boxlayout import BoxLayout 
from kivy.lang import Builder


class main2(BoxLayout):
	def bas(self, nesne, dgr):
		nesne.text = dgr     #buradaki nesne,yukarıdaki btn idli Button sınıfı icin,yani nesne burada btn idli Button sınıfı oluyor.iste bu sınıfın text niteligini burada degistirebiliyorum.

class main(App):
	def build(self):
		Builder.load_file("benim_kv_dosyam.kv") #ayriyeten kv dosyası yuklenmemis,onu bi yuklemelisiniz once.
		return main2()
if __name__ == "__main__":
	main().run()

benim_kv_dosyam.kv adli dosya ile main.py adlı dosyanın aynı dizinde oldugunu varsayıyorum.

Kolay gelsin :blush:.

1 Beğeni

Yardım için teşekkürler :smiley:

1 Beğeni