【问题标题】:Encountering error while using Enter key, space bar, and backspace in wxpython wx.TextCtrl在 wxpython wx.TextCtrl 中使用 Enter 键、空格键和退格键时遇到错误
【发布时间】:2013-06-12 06:50:14
【问题描述】:

在使用 wx.TextCtrl 的文本编辑器中,字母键 (a-z) 数字键 (0-9) 映射到 unicode 值。

遇到错误的行如下,

self.statusbar.SetStatusText(engine.roman2mal(self.word.decode('utf-8')),0)

错误信息如下,

Traceback (most recent call last):
  File "F:\EZHUTHANI_WIN\ezhuthani\beditor.py", line 498, in PreviewConv
    self.statusbar.SetStatusText(engine.roman2mal(self.word.decode('utf-8')),0)
  File "C:\Python27\lib\encodings\utf_8.py", line 16, in decode
    return codecs.utf_8_decode(input, errors, True)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-5: ordinal not in range(128)

有没有办法映射这些键(Enter、空格键、Backspace)?其他键映射如下,

keymap = {}
keymap['a'] = u'\u0D05';
keymap['A'] = u'\u0D06';

【问题讨论】:

  • 我可以要代码吗?
  • 上一次编辑时添加的代码...
  • 这与 wxWidgets 无关,错误发生在 codecs.utf_8_decode 中,正如回调清楚地表明的那样,因此您的 word 不包含有效的 UTF-8 字符串。
  • 这个错误只发生在退格键、空格键和回车键上
  • 你有什么函数使用.decode吗?如果是,请发布代码

标签: python-2.7 wxpython wxwidgets wx.textctrl


【解决方案1】:
self.statusbar.SetStatusText(engine.roman2mal(self.word.decode('utf-8')),0) 

你必须删除 .decode 函数然后代码看起来像

 self.statusbar.SetStatusText(engine.roman2mal(self.word),0) 

【讨论】:

  • 解决了这个问题...代码具有在多个地方使用的 decode?encode 函数。它实际上不必这样做,因为没有它,python 可以打印 unicode 字符。
【解决方案2】:

我不完全确定你要实现什么,但听起来你想使用

wx.WXK_BACK
wx.WXK_ESCAPE
wx.WXK_RETURN
...

也许

keymap = {}
keymap[wx.WXK_ESCAPE] = u'<ESCAPE>'
...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-20
    • 2015-02-21
    • 1970-01-01
    • 2022-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多