OnKeyDownEvent,输入字符或导航

时间:2016-11-05 01:04:12

标签: python keyboard wxpython onkeydown

我对wxPython中的OnKeyDownEvent有点问题。如果用户正在键入一个字符(如A,),/,é,&,...),那么我想采取不同的行动。如果它只是导航(箭头键,pageUp / pageDown,home / end,Ctrl) + A或C或V等等)。基本上,我提取修饰符和键代码如下:

modifiers = e.GetModifiers()
key = e.GetUnicodeKey()
if not key:
    key = e.GetKeyCode()

但在那之后,嗯,这有点复杂。有一段时间,我测试了key的值:

if modifiers == wx.MOD_NONE and 0 < key < 255:

但那不是真的有效......而且不是很漂亮。例如,右括号显然有一个大于255的密钥代码。

如果你想知道为什么我这样做,案例研究有点奇怪:我有一个巨大的文本区域,其中以编程方式输入文本(通过连接到远程服务器),但用户可以输入领域。 然而,当他这样做时,光标移动到最后一行......这有点像只有最后一行的只读文本区域。我这样做是出于可访问性的原因,我知道使用两个单独的字段会更简单,但是,对于屏幕阅读器而言,这并不是那么好。

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

您是否考虑在set()中定义导航键,然后检查该键是否在导航集中,而不是测试所有其他键?
Sets