Kivy技术问询:无需鼠标点击,如何通过按钮选中TextInput?
解决Kivy中通过按钮选中TextInput的问题
嘿,这事儿超简单的!Kivy的TextInput控件自带一个focus属性,只要把它设为True,就能让输入框获得焦点,光标立刻就会在里面闪烁起来。下面给你两种实现方式,挑你喜欢的来用就行:
方式1:通过Python方法实现
修改你的Python代码里的select_textinput方法,直接设置传入的TextInput实例的focus属性为True:
import kivy kivy.require('1.10.0') from kivy.app import App from kivy.lang.builder import Builder from kivy.uix.screenmanager import ScreenManager, Screen class Main(Screen): def __init__(self, **kwargs): super(Main, self).__init__(**kwargs) def select_textinput(self, instance): # 核心操作:设置输入框的focus为True instance.focus = True class GUI(App): def build(self): sm = ScreenManager() sm.add_widget(Main()) return sm if __name__ == '__main__': GUI().run()
对应的KV代码保持原内容即可,因为已经通过on_press调用了这个处理方法。
方式2:直接在KV语言中实现(更简便)
其实你甚至不用写Python方法,直接在KV里给按钮的on_press事件绑定设置focus的操作,代码会更简洁:
#: kivy 1.10.0 <Main>: name: "main_screen" TextInput: id: ti text: "Try to put the cursor here without clicking" Button: text: "Click here to select the text input !" # 直接在这里设置ti的focus为True,省去Python方法 on_press: ti.focus = True
这种情况下,Python代码里的select_textinput方法可以直接删掉,完全用不上啦。
原理说明
当TextInput的focus属性为True时,控件会获取输入焦点,系统会自动显示光标并允许用户输入内容。按钮点击时触发的操作就是把这个属性切换为True,完美实现你想要的效果~
内容的提问来源于stack exchange,提问作者Mike Delta
相关产品推荐
相关产品推荐

