2016-11-05 30 views
2

我在wxPython中的OnKeyDownEvent存在一點問題。如果用戶正在輸入一個字符(如A,),/,é,&,...)以及其他的東西(如箭頭鍵,pageUp/pageDown,home/end,Ctrl + A或C或V等)。基本上,我提取修飾符和這樣的關鍵代碼:OnKeyDownEvent,鍵入字符或導航

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

但之後,好吧,那有點複雜。有一段時間,我測試了鑰匙的價值:

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

但是這不是真的有效......並不是很漂亮。例如右括號顯然有一個大於255的鍵碼。

如果你想知道爲什麼我做這樣的事情,案例研究有點奇怪:我有一個巨大的文本區域,其中編程輸入文本(通過連接到遠處的服務器),但用戶可以輸入此字段。 但是,當他這樣做時,光標移動到最後一行......這有點像有一個只讀文本區域,除了最後一行。我這樣做是出於可訪問性的原因,我知道在兩個單獨的字段中它會簡單得多,但對於屏幕閱讀器來說並不是那麼好。

感謝您的幫助!

回答

2

您是否考慮過在set()中定義導航鍵,然後檢查鍵是否位於導航集中,而不是測試所有其他鍵?
Sets

+0

是的,這可能是一個解決方案,有很多,但絕對少於鍵入鍵。 –

+0

似乎是最明顯的解決方案,應該被接受爲答案,除非它不能滿足您的需求 – user2682863