my app consists of main.py, views/page1, views/page2, views/page3, widget/rowdata
i want when i press on info button goto page3 with current values of rowdata [id, name, phone], And when i press on show file button goto page2 with current values [id, name, phone]
how can i do it:
-------------------------------------
# main.py
from
kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager
from views.page1 import Page1
from views.page2 import Page2
from views.page3 import Page3
KV='''
PageManager:
id: pm
Page1Screen:
name: 'p1'
Page2Screen:
name: 'p2'
Page3Screen:
name: 'p3'
'''
class Page1Screen(Page1):
pass
class Page2Screen(Page2):
pass
class Page3Screen(Page3):
pass
class PageManager(ScreenManager):
pass
class TestApp(App):
def build(self):
return Builder.load_string(KV)
if __name__=='__main__':
TestApp().run()
----------------------------------------------
# views/page1.py
from kivy.uix.screenmanager import Screen
from kivy.lang import Builder
from widget.rowdata import RowData
from kivy.properties import StringProperty
Builder.load_string(
'''
<Page1>:
BoxLayout:
orientation: 'vertical'
Label:
text: 'Page1 Screen'
halign: 'center'
size_hint_y: None
height: 50
Button:
text: 'load'
pos_hint: {'center_x': .5, 'center_y': .5}
size_hint: .7, .1
on_release:
root.lod_data()
ScrollView:
do_scroll: False, True
GridLayout:
id: grid
cols: 1
size_hint_y: None
height: 1000
'''
)
class RD(RowData):
text1 = StringProperty('')
text2 = StringProperty('')
text3 = StringProperty('')
class Page1(Screen):
def __init__(self, **kw):
super().__init__(**kw)
def lod_data(self):
my_lst = [
{'name': 'Mohamed Ahmed',
'id': '0001',
'phone':'0100010001'},
{'name': 'Sayed Abbas',
'id': '0002',
'phone':'0100010002'},
{'name': 'Abd El-Hamid Shawky',
'id': '0003',
'phone':'0100010003'},
]
for lst in my_lst:
rd1= RD(text1=lst['name'], text2=lst['id'], text3=lst['phone'],)
self.ids.grid.add_widget(rd1)
--------------------------------------------------
# views/page2.py
from kivy.uix.screenmanager import Screen
from kivy.lang import Builder
Builder.load_string(
'''
<Page2>:
BoxLayout:
orientation: 'vertical'
Label:
text: 'Page2 Screen'
halign: 'center'
Label:
id: lb_name
Label:
id: lb_id
Label:
id: lb_phone
'''
)
class Page2(Screen):
pass
-----------------------------------------------------------
# views/page3.py
from kivy.uix.screenmanager import Screen
from kivy.lang import Builder
Builder.load_string(
'''
<Page3>:
BoxLayout:
orientation: 'vertical'
Label:
text: 'Page3 Screen'
halign: 'center'
Label:
id: lb_name
Label:
id: lb_id
Label:
id: lb_phone
'''
)
class Page3(Screen):
pass
---------------------------------------------------------
# widget/rowdata
from kivy.uix.gridlayout import GridLayout
from kivy.lang import Builder
Builder.load_string(
'''
<RowData>:
cols: 3
size_hint_y: None
height: 75
size_hint_x: .8
spacing: dp(10)
padding: dp(10)
Button:
text: 'info.'
size_hint_x: .1
BoxLayout:
orientation: 'vertical'
Label:
text: root.text1
Label:
text: root.text2
Label:
text: root.text3
Button:
id: btn1
text: 'Show Orders'
size_hint: .3, .1
'''
)
class RowData(GridLayout):
pass
----------------------------------------------