要求在文本框中输入文本时达到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()