Как сделать ключевое событие wxpython в textctrl?

Вот мой код

Python 2.7 и wxpython 2.8

http://pastie.org/4248326

эти 3 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 ответ

Решение

e.GetKeyCode() возвращает int. Вы не передаете int в текстовый элемент управления. Текстовый элемент управления принимает только строку или строку Юникода. Так что вам нужно будет привести int в строку или сделать что-то еще. Вот как это сделать:

key = str( e.GetKeyCode() )
Другие вопросы по тегам