The issue most probably is the the standard output is not getting flushed automatically instead it is getting buffered, for your case to work, you should manually flush() stdout -
import time
import sys
def textinput(txt,waittime=0.04):
end = len(txt)
letters = 0
while end != letters:
print(txt[letters], end = '')
sys.stdout.flush()
letters += 1
time.sleep(waittime)
textinput('Hello there!')