SDL2错误?应用程序未接收外部键盘输入事件。(iPhone上的Kivy/Python)

SDL2错误?应用程序未接收外部键盘输入事件。(iPhone上的Kivy/Python),python,keyboard,kivy,sdl-2,Python,Keyboard,Kivy,Sdl 2,我想将外部键盘操作添加到我的应用程序中。键盘在Mac/Kivy环境下工作正常,但在iPhone上(通过工具链.py发送),显示文本输入对话框后,键盘输入事件丢失。 在以下示例中,可以通过“Enter”键将MyLayout2切换到MyLayout1,但不能通过“Enter”键将MyLayout1切换到MyLayout2。我认为这可能是由于SDL2版本,所以我将其更新为最新版本2.0.10,但没有任何更改。这是SDL2的一个bug吗 Python代码 奇维码 : 盒子布局: 方向:“垂直” 填充:1

我想将外部键盘操作添加到我的应用程序中。键盘在Mac/Kivy环境下工作正常,但在iPhone上(通过工具链.py发送),显示文本输入对话框后,键盘输入事件丢失。 在以下示例中,可以通过“Enter”键将MyLayout2切换到MyLayout1,但不能通过“Enter”键将MyLayout1切换到MyLayout2。我认为这可能是由于SDL2版本,所以我将其更新为最新版本2.0.10,但没有任何更改。这是SDL2的一个bug吗

Python代码 奇维码
:
盒子布局:
方向:“垂直”
填充:10,40,10,40
间距:40
:
按钮1:
id:btn1
文本:“确定或输入键”
发布时:root.parent.button1\u单击()
:
txtinput:txtinput
方向:“垂直”
文本输入:
id:txtinput
文本:“”
多行:False
焦点:正确
按钮2:
id:按钮2
文本:“确定或输入键”
发布时:root.parent.button2\u单击()
:
:
:

您确实升级了设备上的sdl2版本吗?我想是的。通过“/toolchain.py recipes”,我得到了以下信息。python2 2.7.1 python3 3.7.1 pyyaml 3.11 sdl2 2.0.10 sdl2_图像2.0.4 sdl2_混合器2.0.4 sdl2_ttf 2.0.14 werkzeug master zbarlight 1.2
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import NumericProperty
from kivy.uix.gridlayout import GridLayout
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.textinput import TextInput
from kivy.core.window import Window
sm = ScreenManager()
class MyLayout1(BoxLayout):
    pass
class MyLayout2(BoxLayout):
    pass
class MyScreen(Screen):
    dialog_number = 0
    def __init__(self, **kwargs):
        super(MyScreen, self).__init__(**kwargs)
        self.gridlayout = None
        self.gridlayout = MyLayout2()
        self.add_widget(self.gridlayout)
        Window.bind(on_key_up=self._keyup)
    def _keyup(self,*args):   
        print(args[2])
        if (args[2] == 40):
            if self.dialog_number == 0:
                self.button2_clicked()
            elif self.dialog_number == 1:
                self.button1_clicked()

    def button1_clicked(self, *args):
        if self.gridlayout is not None:
            self.remove_widget(self.gridlayout)
        self.gridlayout = MyLayout2()
        self.add_widget(self.gridlayout)
        self.dialog_number = 0

    def button2_clicked(self, *args):
        if self.gridlayout is not None:
            self.remove_widget(self.gridlayout)
        self.gridlayout = MyLayout1()
        self.add_widget(self.gridlayout)
        self.dialog_number = 1

class myApp(App):
    def build(self):  
        self.myscreen = MyScreen(name = 'myscreen') 
        sm.add_widget(self.myscreen)
        sm.current = 'myscreen'
        return sm

if __name__ == '__main__': 
    myApp().run()
<MyScreen>:
    BoxLayout:
        orientation: 'vertical'
        padding: 10,40,10,40 
        spacing: 40 

<MyLayout1>:
    Button1:
        id: btn1
        text: '<MyLayout1> OK or ENTER key'
        on_release: root.parent.button1_clicked()  


<MyLayout2>:
    txtinput: txtinput
    orientation: 'vertical'
    TextInput:
        id: txtinput
        text: ''
        multiline: False
        focus: True
    button2:
        id:Button2
        text: '<MyLayout2> OK or ENTER key'
        on_release: root.parent.button2_clicked()  

<Button0@Button>:
<Button1@Button>:
<button2@Button>: