2017-08-07 25 views
0

有人知道如何设置光标在kivy的第一行后输入?设置光标在TextInput上的第一个总是kivy

from kivy.app import App 
from kivy.uix.textinput import TextInput 
from kivy.uix.boxlayout import BoxLayout 

class MyApp(App): 

    def build(self): 
     BoxPrincipal = BoxLayout(orientation = 'vertical') 

     self.textinput = TextInput(text='Hello world', multiline=False) 
     self.textinput.bind(on_text_validate=self.on_enter) 

     BoxPrincipal.add_widget(self.textinput) 


     return BoxPrincipal 

    def on_enter(self, instance): 
     print('User pressed enter in', instance) 
     print self.textinput.cursor_row 
     self.textinput.text = "" 
     self.textinput.focus = True 

if __name__ == '__main__': 
    MyApp().run() 

后进入我需要设置光标在第一上的TextInput

有人能帮助我吗?

+0

在on_enter方法将在你的第二个print语句后的括号内。您的textinput清除并添加另一个打印语句print(self.textinput.cursor),您的光标位于(0,0)处。你真的想达到什么目的?你能否给你的问题增加一些背景知识。 – PalimPalim

+0

并输入指按Enter键不输入文本输入。你有混淆吗? – PalimPalim

回答

0

enter image description here enter image description here 将光标设置为第一个位置并在输入之前在TextInput中有文本可以更容易实现。有一个属性调用hint_text看到这里https://kivy.org/docs/api-kivy.uix.textinput.html#kivy.uix.textinput.TextInput.hint_text

from kivy.app import App 
from kivy.uix.textinput import TextInput 
from kivy.uix.boxlayout import BoxLayout 

class MyApp(App): 

    def build(self): 
     BoxPrincipal = BoxLayout(orientation = 'vertical') 

     self.textinput = TextInput(hint_text='Hello world', multiline=False) 

     BoxPrincipal.add_widget(self.textinput) 


     return BoxPrincipal 

if __name__ == '__main__': 
    MyApp().run() 
+0

我需要在TextInput中写入一些内容并给出回车后,执行“on_text_validate”动作,然后光标返回到TextInput的位置(0,0) –