from kivy.uix.label import Label from kivy.core.window import Window from kivy.graphics import Color,Rectangle class Command_prompt(Label): def __init__(self,app,**kwargs): # app is used to share information between widgets self.app=app # insert mode self.insert=False # cursor position self.cursor=0 self.cursor_width=9 # the text, with no color information self.raw_text="" # init Label super(Command_prompt,self).__init__(**kwargs) self.keyboard = Window.request_keyboard(None,self,"text") self.keyboard.bind(on_textinput=self.on_textinput,on_key_down=self.on_key_down) self.draw() def draw(self): with self.canvas.before: # background Color(0,0,0) Rectangle(pos=self.pos,size=self.size) # cursor Color(1,1,1) Rectangle(pos=(self.pos[0]+self.cursor*self.cursor_width,self.pos[1]),size=(self.cursor_width,self.height)) # make text under cursor black if self.cursor0 and self.cursor==len(self.raw_text)) or (n<0 and self.cursor==0): return self.cursor=max(0,min(len(self.raw_text),self.cursor+n)) self.draw()