关于wxpython的问题:要求在多行文本框中输入文本时达到80个字符自动换行

要求在文本框中输入文本时达到80个字符自动换行,有什么方法实现吗?

绑定文本框内容改变事件,不难实现自动换行。不过,不要忘记设置输入位置到最后。

import wx

class MainFrame(wx.Frame):
    """从wx.Frame派生主窗口类"""
    
    def __init__(self, parent):
        """构造函数"""
        
        wx.Frame.__init__(self, parent, -1,style=wx.DEFAULT_FRAME_STYLE)
        
        self.SetTitle('最简的的应用程序')
        self.SetSize((300, 150)) # 设置窗口大小
        self.Center() # 窗口在屏幕上居中
        
        tc = wx.TextCtrl(self, style=wx.TE_MULTILINE)
        tc.Bind(wx.EVT_TEXT, self.on_text)
    
    def on_text(self, evt):
        """响应文本框输入内容改变事件"""
        
        limit = 20 # 80个字符太长了,改用20测试
        obj = evt.GetEventObject()
        text = evt.GetString()
        
        if len(text) == 0:
            return
        
        content = list()
        for line in text.split('\n'):
            if len(line) <= limit:
                content.append(line)
            else:
                for i in range(0, len(line), limit):
                    content.append(line[i:i+limit])
        
        content = '\n'.join(content)
        if content != text:
            obj.SetValue(content)
            obj.SetInsertionPointEnd()

if __name__ == '__main__':
    app = wx.App()
    frame = MainFrame(None)
    frame.Show()
    app.MainLoop()