如何在textctrl中创建关键事件wxpython?

时间:2012-07-13 07:30:11

标签: event-handling wxpython keycode textctrl

这是我的代码

python 2.7& wxpython 2.8

http://pastie.org/4248326

这三个textctrl,在chat_c(textctrl)

我想让chat_c和text_c像聊天室一样

输入是chat_c输出是text_c

这就是我使用

的原因
def OnReturnDown(self,e):

    key = e.GetKeyCode()
    self.text_c.SetValue(key) #for check out but doesn't work
    if key == wx.WXK_RETURN:
        self.text_c.SetValue(self.chat_c.GetValue()) 

 #key bind
    self.chat_c.Bind(wx.EVT_KEY_DOWN, self.OnReturnDown)

这是错误消息

Traceback (most recent call last):
  File "C:\workspace\wx_python_test\main_chat_client.py", line 239, in OnReturnDown
    self.text_c.SetValue(key) #for check out but doesn't work
  File "C:\Python27\Lib\site-packages\wx-2.8-msw-unicode\wx\_controls.py", line 1754, in SetValue
    return _controls_.TextCtrl_SetValue(*args, **kwargs)
TypeError: String or Unicode type required
那是什么?需要Unicode类型???

可能会改变textctrl的风格?

如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

e.GetKeyCode()返回一个int。您不会将int传递给文本控件。文本控件只接受字符串或unicode字符串。因此,您需要将int转换为字符串或执行其他操作。以下是如何投射它:

key = str( e.GetKeyCode() )