The .text attribute of a Field is a string. Performing any sort of arithmetic operation on a string coerces it to a number (as a convenience), and in many places a string like "23" is fully interchangeable with the number 23:
100+"23" # 123
Unfortunately, indexing into lists isn't one of those places:
foo:"Alpha","Beta","Gamma" foo[1] # "Beta" foo["1"] # 0 foo[0+"1"] # "Beta"
Part of the reason Lil draws a hard line here is that indexing lists by strings is one way to force them to "promote" to dictionaries when you assign through them; trying to parse strings into numbers could lead to some very nasty ambiguity:
foo["z"]:"Delta" # {0:"Alpha",1:"Beta",2:"Gamma","z":"Delta"}
I apologize for the confusion stemming from my suggestions.
One possible alternative would be to make "counter" a Slider widget instead of a Field; The value of a Slider is always a number.