So I'm struggling with this one small bit where I cannot find a way to pass a value through a procedure when a ListView item is pressed. The example below is a simpler version of what I want to happen and how my main code is set out. The goal is so a can see ChangeScreen(self.index) on the hash tagged on_release: in the KV file. However the issue is I do not know how to call ChangeScreen successfully. Thanks!
Kivy:
#: import main main
#: import ListAdapter kivy.adapters.listadapter.ListAdapter
AppScreenManager:
DemoScreen1:
id: screen1
DemoScreen2:
id: screen2
<DemoScreen1>:
name: "demoscreen1"
BoxLayout:
orientation: "vertical"
ListView:
adapter:
ListAdapter(data=["Screen 1","Screen 2"], cls=main.ListButton)
<DemoScreen2>:
name: "demoscreen2"
orientation: "vertical"
BoxLayout:
orientation: "vertical"
Label:
id: labText
text: "Hello World"
<ListButton>:
height: self.texture_size[1]
on_release: ### HOW DO I CALL THE ChangeScreen FUNCTION HERE
Python:
import kivy
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.properties import StringProperty, ObjectProperty, ListProperty
from kivy.uix.listview import ListItemButton
class DemoScreen1(Screen):
def ChangeScreen(self, option):
if option == 0:
print("Screen1")
self.parent.ids.screen2.labelUpdater("Screen 1 was pressed")
else:
print("Screen2")
self.parent.ids.screen2.labelUpdater("Screen 2 was pressed")
self.parent.current = "demoscreen2"
class DemoScreen2(Screen):
labText = StringProperty()
def labelUpdater(self,newText):
self.ids.labText.text = newText
class ListButton(ListItemButton):
data = ListProperty()
class AppScreenManager(ScreenManager):
pass
class Tester(App):
pass
if __name__ == '__main__':
Tester().run()