在我的应用程序中,我按空格键进入下一个屏幕,空格键触发删除当前主窗口小部件并加载新窗口小部件。 我还可以按'E'来显示一个弹出窗口,主窗口小部件的子窗口,,其中包含文本字段
我的问题是,当我的弹出窗口出现并且我在其输入字段中键入内容时,每次我按空格或E键时,它仍然会触发下一个屏幕/弹出功能
现在我用一个全局“pause”bool变量做了一个肮脏的变通,但我觉得我做得不对! 那么,有没有一种方法可以在打字时禁用键盘事件,或者有其他适当的方法来处理这个问题呢
我的代码的(过度)简化版本:
class affichage(GridLayout):
def __init__(self, **kwargs):
super(affichage, self).__init__(**kwargs)
self.popup = EditPopup(self.reponse, self.on_VALIDERpop)
Window.bind(on_key_down=self._on_keyboard_down)
def _on_keyboard_down(self, instance, keyboard, keycode, text, modifiers):
if(text == ' '):
self.nextScreen()
if(text == 'e'):
self.popupOpen()
def popupOpen(self):
self.popup.open()
class EditPopup(Popup):
titre = StringProperty("")
detail = StringProperty("")
def __init__(self,titre, detail, on_VALIDER, **kwargs):
super(EditPopup, self).__init__(**kwargs)
self.titre = titre
self.detail = detail
self.call_on_VALIDER=on_VALIDER
def send_new_details(self, nouvTitre, nouvDescr):
self.call_on_VALIDER(self.titre,
nouvTitre,nouvDescr])
因此,正如建议的那样,我使用了取消绑定功能,它可以工作: 我打电话
Window.unbind(on_key_down=self._on_keyboard_down)
在弹出窗口打开时 然后我把键盘用Window.bind(on_key_down=self._on_keyboard_down)
在弹出窗口关闭时我必须重写popup.open()和popup.disclose(),我是这样做的: (注意:我们在编辑弹出窗口中,这是kivy弹出窗口的子类)
相关问题 更多 >
编程相关推荐