Screenmanager Başa dönüyor

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.screenmanager import ScreenManager,Screen
from kivy.lang import Builder

Builder.load_string("""
<ekran1>:
    Screen:
        BoxLayout:
            Button:
                text:"ana menu"
                on_press:root.manager.current=root.manager.next()
            Button:
                on_press:quit()    
                text:"kapat"
<ekran2>:
    Button:
        text:"Geri"
        on_release:root.manager.current=root.manager.previous()
    GridLayout:
        cols:2
        padding:10
        spacing:10
        Label:
            text:"Kullanıcı Adı"
            id: lbl
            font_size: sp(20)
        TextInput:
            id: txt
            font_size: sp(20)
            multiline:False
        Label:
            text:"Parola"
            id: lblpa
            font_size: sp(20)
        TextInput:
            id: txt1
            font_size: sp(20)
            multiline:False
            password:True
    
        Button:
            text:"Gir"
            font_size: sp(40)
            on_release:app.gir()
        Button:
            text:"Temizle"
            id: sil
            on_release:app.sil()       
""")
class ekran1(Screen):
    pass

class ekran2(Screen):
    pass

class screenApp(App):
    def gir(self):
        if self.root.ids.txt.text == "muhit":
            self.root.ids.txt.text ="Kullanıcı Adı dogru"
            
        else:
            self.root.ids.txt.text ="Kullanıcı Adı yanlış"
        if self.root.ids.txt1.text =="1234":
            self.root.ids.txt1.text ="Parolanız dogru"
        
        else:
            self.root.ids.txt1.text ="Parola adı yanlış"
           
            self.root.ids.sil.color = 0,1,0,1
            
    def sil(self):
        self.root.ids.txt.text = ""

        self.root.ids.txt1.text = ""
    def build(self):
        root=ScreenManager()
        
        root.add_widget(ekran1(name="giris_ekrani"))
        root.add_widget(ekran2(name="kontrol_ekrani"))
        return root

screenApp().run()        

İlk ekrana tıklanınca ikinci ekrana gidiyor.İkinci ekranda şifre giricem ama sayfa tekrar başa dönüyor.
Syfanın başa dönmemesi lazım.

Bazı yerlerde hata var. Mesela TextInputun arkasına button koymuşsunuz buda kullanıcının TextInputun tıkladıgı an butona tıklamış gibi oluyor. Yani düzenleri biraz daha çalışmanız denemeler yapmanız gerekiyor. :slight_smile:

(mantık işlemlerine biraz daha çalışmanızı tavsiye ederim aynı şekilde düzenlerede(layout))

Kodları bu şekilde düzelttim. :slight_smile:

(Aşşagıdaki kodlarda anlmadıgınız biryer varsa burdan yazın…)

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.screenmanager import ScreenManager,Screen
from kivy.lang import Builder

Builder.load_string("""
<ekran1>:
	BoxLayout:
		Button:
			text: "Çıkış"
			on_release: quit()

		Button:
			text: "Ana Menü"
			on_release:
    			root.manager.transition.direction = "left"
				root.manager.current = "ekran2"
<ekran2>:
	GridLayout:
		spacing: 20
		padding: 20
		cols: 2

		Label:
			text: "Kullanıcı Adınız"
			font_size: sp(25)
		
		TextInput:
			multiline: False
			id: txt1
		
		Label:
			text: "Parolanız"
			font_size: sp(25)

		TextInput:
			id: txt2
			multiline: False
			password: True

		Label:
			font_size: sp(30)
			text: ""
			id: lbl

		Button:
			text: "Gir"
			id: gir
			on_release: root.gir()
""")
class ekran1(Screen):
    pass

class ekran2(Screen):
    def gir(self):
   		if not self.ids.txt1.text or not self.ids.txt2.text:
   			self.ids.lbl.color = 1,0,0,1
   			self.ids.lbl.text = "Boş Yer Bırakmayın!"

   		elif self.ids.txt1.text == "isim" and self.ids.txt2.text == "123":
   			self.ids.lbl.color = 0,1,0,1
   			self.ids.lbl.text = "Bilgiler Dogru hoşgeldiniz..."

   		elif self.ids.txt1.text != "isim" or self.ids.txt2.text != "123":
   			self.ids.lbl.color = 1,0,0,1
   			self.ids.lbl.text = "Kullanıcı Adınız veya Parolanız Hatalı!"	

   		else:
   			pass

sm = ScreenManager()
sm.add_widget(ekran1(name = "ekran1"))
sm.add_widget(ekran2(name = "ekran2"))

class screenApp(App):
    def build(self):
        return sm

screenApp().run()

Self.root.ids değilde self.ids yapmışsın.
Root olması gerekmezmiydi.
Screenmanageri buildin altına koymak gerekli değilmiydi.
Bir yerde okudum buildin altında olması lazımmış.

İstedigin yere koyabilirsin çok fark etmez galiba. :slight_smile: self.ids.yapmışım çünkü ana sınıfım olan App sınıfımım dışında oldugu için bu digerleri için geçerli ama ana sınıf için root şart. :slight_smile: