from kivy.app import App
from kivy.core.window import Window
from kivy.properties import ObjectProperty
from kivy.uix.listview import ListView
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.utils import platform
states = ['Alabama ', 'Alaska ', 'Arizona ', 'Arkansas ', 'California ',
'Colorado ', 'Connecticut ', 'Delaware ', 'Florida ', 'Georgia ',
'Hawaii ', 'Idaho ', 'Illinois ', 'Indiana ', 'Iowa ', 'Kansas ',
'Kentucky ', 'Louisiana ', 'Maine ', 'Maryland ', 'Massachusetts ',
'Michigan ', 'Minnesota ', 'Mississippi ', 'Missouri ','Montana ',
'Nebraska ', 'Nevada ', 'New Hampshire ', 'New Jersey ', 'New Mexico ',
'New York ', 'North Carolina ', 'North Dakota ', 'Ohio ', 'Oklahoma ',
'Oregon ', 'Pennsylvania ', 'Rhode Island ', 'South Carolina ',
'South Dakota ', 'Tennessee ', 'Texas ', 'Utah ', 'Vermont ',
'Virginia ', 'Washington ', 'West Virginia ', 'Wisconsin ', 'Wyoming ']
sm = ScreenManager() # they say globals are evil, but avoiding them is hard in kivy
class MyListView(ListView):
#~ def __init__(self, **kwargs):
#~ super(MyListView, self).__init__(
#~ item_strings=states)
def update(self, filter = ''):
if filter == '':
mylist = states
else:
result = []
for item in states:
if filter.lower() in item.lower():
result.append(item)
mylist = result
self.height = len(mylist)*25.4*1.2
self.item_strings = mylist
print('set list............................')
class Screen1(Screen):
def on_enter(self):
filter_text = ObjectProperty()
mylistview = ObjectProperty()
bottom_label = ObjectProperty()
self.filter_text.text = 'filter'
self.mylistview.update()
def filter_button_press(self):
filter_text = ObjectProperty()
filter = self.filter_text.text
self.mylistview.update(filter)
def clear_filter_button_press(self):
filter_text = ObjectProperty()
self.filter_text.text = ''
self.mylistview.update()
class ListView5App(App):
def build(self):
if platform == 'android':
pass
else:
Window.size = (364,596)
# Create the screen manager
global sm
sm.add_widget(Screen1(name='Screen1'))
return sm
if __name__ == '__main__':
ListView5App().run()