Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Kivy-无法重新聚焦输入字段?_Python_Kivy - Fatal编程技术网

Python Kivy-无法重新聚焦输入字段?

Python Kivy-无法重新聚焦输入字段?,python,kivy,Python,Kivy,我有以下使用kivy的示例- 当我在输入字段1中写入内容并按下重置时,一切正常(输入字段被删除,关注字段1)。 但当我在field2中更改某些内容并按下重置按钮时,应用程序似乎被破坏了 为什么会这样?为什么语句self.ids.stockTicker.focus=True每次都不起作用 py文件: import threading from kivy.app import App from kivy.uix.widget import Widget from kivy.lang import B

我有以下使用kivy的示例-

当我在输入字段1中写入内容并按下重置时,一切正常(输入字段被删除,关注字段1)。 但当我在field2中更改某些内容并按下重置按钮时,应用程序似乎被破坏了

为什么会这样?为什么语句
self.ids.stockTicker.focus=True
每次都不起作用

py文件:

import threading
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.lang import Builder
from kivy.core.window import Window


Builder.load_file("TryApp.kv")

class MyLayout(Widget):
    Window.size = (550, 700)

    def Reset(self):
        self.ids.stockTicker.text = ""
        self.ids.stockTicker.focus = True
        self.ids.index.text = "SP500"

    def pressReset(self):
        threading.Thread(target=self.Reset).start()

class MyTry(App):
    def build(self):
        return MyLayout()

if __name__ == "__main__":
    MyTry().run()
kv文件:

<MyLayout>
    BoxLayout:
        orientation: "vertical"
        size: root.width, root.height

        GridLayout:
            size_hint: (1, .5)
            cols: 2
            Label:
                text: "Field1"
                font_size: 18
            TextInput:
                id: stockTicker
                focus: True
            Label:
                text: "Field2"
                font_size: 18
            TextInput:
                id: index
                text: "xyz"

        Button:
            id: buttonReset
            text: "Reset"
            #font_size: 20
            on_press: root.pressReset()
            size_hint: (None,None)
            width: 110
            height: 70

盒子布局:
方向:“垂直”
尺寸:根.宽度,根.高度
网格布局:
尺寸提示:(1.5)
科尔斯:2
标签:
文本:“字段1”
字号:18
文本输入:
id:股票代码
焦点:正确
标签:
文本:“字段2”
字号:18
文本输入:
id:索引
文本:“xyz”
按钮:
id:buttonReset
文本:“重置”
#字体大小:20
按:root.pressReset()
大小提示:(无,无)
宽度:110
身高:70

我想你只需要改变一下:

        on_press: root.pressReset()
致:

原因是,当按下按钮时的
事件触发
pressReset()
方法时,焦点会根据需要更改,但随后
按钮
释放事件会将焦点更改回
按钮
。将其更改为发布时的
事件可以消除该问题

        on_release: root.pressReset()