使用kivy和python返回屏幕管理器时未设置焦点

使用kivy和python返回屏幕管理器时未设置焦点,python,kivy,focus,screen,Python,Kivy,Focus,Screen,我想在textinput中设置焦点。开始时焦距设置正确,但当我转到下一个屏幕并返回初始屏幕时,焦距设置不正确 这是一个带有rfid选择器的应用程序,我想读取一个代码并选择输入或退出 main.py 进口克维 kivy。需要将“1.10.0”替换为当前的kivy版本! 从kivy.app导入应用程序 从kivy.core.window导入窗口 从kivy.uix.screenmanager导入screenmanager,屏幕 从kivy.lang导入生成器 类myScreenManager Scr

我想在textinput中设置焦点。开始时焦距设置正确,但当我转到下一个屏幕并返回初始屏幕时,焦距设置不正确

这是一个带有rfid选择器的应用程序,我想读取一个代码并选择输入或退出

main.py

进口克维 kivy。需要将“1.10.0”替换为当前的kivy版本! 从kivy.app导入应用程序 从kivy.core.window导入窗口 从kivy.uix.screenmanager导入screenmanager,屏幕 从kivy.lang导入生成器 类myScreenManager ScreenManager: 定义初始自我,**kwargs: 超级屏幕管理器,self.\u init__ 类别菜单1屏幕: 定义初始自我,**kwargs: 超人1,自我__ 类菜单2屏幕: 定义初始自我,**kwargs: 超人2,自我__ Builder.load_filemain.kv FichajeApp类: def buildself: 返回MyScreenManager 如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu': 费沙杰·朗 主电压(千伏)

没有错误消息,但焦点不在正确的站点中, 谢谢


我更改代码以简化错误

在示例中,没有尝试更改焦点。但我想这是尝试过的,但它又失去了焦点。 文本输入再次失去焦点的原因是,它在鼠标或点击被释放之前获得焦点。on_press方法之后是on_release,此时文本输入再次失去焦点。 要解决这个问题,您只需在on_release方法中设置焦点即可

最快的方法是只在kv文件中添加一行代码,然后将on_press更改为on_release

例如,通过在screen1中使用对象属性,此行可能会有所不同。或者,如果您无法使用on_release方法,可以使用clock在一定时间内安排对焦,如果触摸仍处于关闭状态,则重新安排。 但这里有一个快速解决办法

<Menu2>:
    name: "screen2"
    BoxLayout:
        Button:
            text:"Entrada"
            on_release:
                root.manager.current = "screen1"
                root.manager.get_screen("screen1").ids["input1"].focus = True

此示例包含的文本输入屏幕远远不止两个。有必要吗?标签和时钟标签是必要的,在第二个屏幕上有两个按钮,当按下按钮返回第一个屏幕。您可以在python代码中看到的其他内容在将来会很有用。谢谢你!没问题,只是一个提示。如果你想要快速的答案,那么把你的例子浓缩到你的问题所在。仍然可以运行。def LimpiaInputself:self.ids.TxtCodigo.text=self.ids.TxtCodigo.focus=True@el3ien我更改了代码,你能帮我吗?
root.manager.get_screen("screen1").ids["input1"].focus
<Menu2>:
    name: "screen2"
    BoxLayout:
        Button:
            text:"Entrada"
            on_release:
                root.manager.current = "screen1"
                root.manager.get_screen("screen1").ids["input1"].focus = True