İkinci pencereye nasıl geçerim

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager,Screen


Builder.load_file("screen.kv")

class pencere1(Screen):
	def kayt(self):
		f=open("dosyaTR.txt","w")
		f.write(self.root.ids.txt.text)
		f.write("\n")
		f.close()
	def oku(self):
		f=open("dosyaTR.txt","r")
		self.yazi=(f.read())
		self.manager.pencere2="%s"% self.yazi			
class pencere2(Screen):
	pass
	
sm=ScreenManager()
sm.add_widget(pencere1(name="pencere1"))
sm.add_widget(pencere2(name="pencere2"))

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

		
		
uygulama().run()	
-----------------------------------------------------
#kv dosyası...
<pencere1>:
    BoxLayout:
        TextInput:
            id:txt
            multiline:True
    BoxLayout:
        Button:
            text:"Oku"
            size_hint_y:.2
            on_press:app.oku()       
        Button:
            text:"Kayıt"
            size_hint_y:.2
            on_press:app.kayt()
        Button:
            text:"Git" 
            size_hint_y:.2
            on_press:
                root.manager.transition.direction="left"
                root.manager.transition.duration=.2
                root.manager.current="pencere2" 
<pencere2>
    BoxLayout:
        Label:
            id: lbl 
        Button:
            text:"Geri"
            size_hint_y:.2
            on_press:root.manager.current=root.manager.previous()
#1 pencerede dosyayı kayıt  edip 2 inci pencerede göstericem.Ama kayıt olmuyor.AttributeErorr veriyor
[...]
<pencere1>:
    id: siir #burada screenin idini siir yaptım
    BoxLayout:
        TextInput:
            id:txt
            multiline:True
    BoxLayout:
        Button:
            text:"Oku"
            size_hint_y:.2
            on_press:siir.oku(txt)       
        Button:
            text:"Kayıt"
            size_hint_y:.2
            on_press:siir.kayt(txt) #sen burada app.kayt diyemezsiniz. app.kayt demen için uygulama adlı classın içinde o fonksiyonun olması lazım pencere1 adlı class ın içindeki kayt fonksiyonunu kullanman için siir.kayt demelisin. siir burada pencere1 adlı class ın yerine geçer
            #ayrıca ben orada siir.kayt(txt) yaptım. txt orada TextInput classının kendisidir.
        Button:
            text:"Git" 
            size_hint_y:.2
            on_press:
                root.manager.transition.direction="left"
                root.manager.transition.duration=.2
                root.manager.current="pencere2"
[...]
class pencere1(Screen):
    def kayt(self, nesne): 
        print("burada nesne nedir sorusuna bir cevap",nesne)
        f.open("dosyaTR.txt","w")
        f.write(nesne.text)
        f.write("\n")
        f.close()
[...]

Edit: Ayrıca oku fonksiyonu da hata verecektir. sen app.oku dediğinde oku fonksiyonu uygulama adlı class içinde aranacak, bulunamayınca bir attribute error yükseltecektir.

Kolay gelsin :blush:

Cihat bu dosya kayıt yapılıyor onu biliyorum ama oku dediğimde pencere 2 de gözükmesini istiyorum.Yani 1 pencerede butona tıklayınca 2 inci pencerede yazıyı okunacak.Yani şöyle deyim hamburger menu gibi…


#!/usr/bin/env python
# -*- coding: utf-8 -*-
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager,Screen
Builder.load_string("""
<pencere1>:
    BoxLayout:
        TextInput:
            font_size: sp(25)
            id: txt
    BoxLayout:
        Button:
            text: "Oku"
            size_hint_y: .2
            on_press: root.oku()       
        Button:
            text: "Kayıt"
            size_hint_y: .2
            on_press: root.kayt()
        Button:
            text: "Git" 
            size_hint_y: .2
            on_press:
                root.manager.transition.direction = "left"
                root.manager.transition.duration = .5
                root.manager.current = "pencere2" 
<pencere2>
    BoxLayout:
        orientation: "vertical"
        Label:
            id: lbl
            font_size: sp(25)
        BoxLayout:
            Button:
                text: "Göster"
                size_hint_y: .2
                on_press: root.goster()
            Button:
                text: "Geri"
                size_hint_y: .2
                on_press:
                    root.manager.transition.direction = "right"
                    root.manager.transition.duration = .5
                    root.manager.current = "pencere1" 
""")

class pencere1(Screen):
	def kayt(self):
		f = open("dosyaTR.txt","w")
		f.write(self.ids.txt.text)
		f.write("\n")
		f.close()
	def oku(self):
		f = open("dosyaTR.txt","r")
		self.yazi = (f.read())
		self.ids.txt.text = "%s" % self.yazi

class pencere2(Screen):
    def goster(self):
        f = open("dosyaTR.txt","r")
        self.yazi = (f.read())
        self.ids.lbl.text = self.yazi

sm = ScreenManager()
sm.add_widget(pencere1(name = "pencere1"))
sm.add_widget(pencere2(name = "pencere2"))

class uygulama(App):
	def build(self):
		return sm
		
uygulama().run()