1

这是我的代码

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的风格?

如何解决这个问题?

4

1 回答 1

1

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

key = str( e.GetKeyCode() )
于 2012-07-13T13:24:24.710 回答