@DavinE please try this quick and dirty example
import ui
class MyView(ui.View):
def __init__(self,w,h):
self.width = w
self.height = h
# init existing codes
self.codes = ['1','2','25','2587','2549','256625/10000','3','33','4','44/45']
# TextField for search
search_width = self.width - 100
search_text = ui.TextField(name='search_text')
search_text.text = ''
search_text.width = search_width - 100
search_text.height = 32
search_text.x = (self.width - search_width)/2
search_text.y = 10
search_text.border_color = 'blue'
search_text.border_width = 3
search_text.text_color = 'blue'
search_text.keyboard_type = ui.KEYBOARD_DEFAULT
search_text.autocorrection_type = False
search_text.alignment = ui.ALIGN_LEFT
search_text.clear_button_mode = 'while_editing'
search_text.font= ('Helvetica',20)
search_text.delegate = self
self.add_subview(search_text)
# ListDataSource for search TableView
found_codes = ui.TableView(name='found_codes')
found_codes.allows_multiple_selection = False
found_codes.text_color = 'black'
found_codes.font= ('Courier',12)
found_codes.row_height = 50
found_codes.x = search_text.x
found_codes.y = search_text.y + search_text.height + 10
found_codes.width = search_width
found_codes.height = self.height - 130
found_codes.border_color = 'blue'
found_codes.border_width = 3
found_codes.data_source = ui.ListDataSource(items=[])
self.add_subview(found_codes)
def textfield_did_change(self, field):
txt = field.text
lst = []
for code in self.codes:
if txt and code.startswith(txt):
lst.append(code)
self['found_codes'].data_source.items = lst
def main():
w, h = ui.get_screen_size()
my_back = MyView(w,h)
my_back.background_color='white'
my_back.name = 'for @DavinE'
my_back.present('fullscreen',hide_title_bar=False)
# Protect against import
if __name__ == '__main__':
main()