如何在wxPython中为stc.StyledTextCtrl()设置自动换行

时间:2016-12-05 17:42:03

标签: python-2.7 wxpython word-wrap

我对此感到疑惑,所以我做了很多谷歌搜索,并提出了SetWrapMode(self, mode)功能。但是,它从来没有真正详细,并且没有任何真正说如何使用它。我最终搞清楚了,所以我想我会在这里发布一个帖子并回答我自己的问题,其他任何想知道如何使stc.StyledTextCtrl()有自动换行的人。

3 个答案:

答案 0 :(得分:1)

好的,首先你需要定义你的Styled Text Control,当然。如果你不知道如何做到这一点,那么去看看wxPython上的一些教程。我推荐一个叫做senddex http://youtube.com/sentdex的youtuber,他有一个关于wxPython的完整系列,以及Zach King,他有一个关于制作文本编辑器的4集系列。无论如何,我对文本控件的定义如下所示:self.control = stc.StyledTextCtrl(self, style=wx.TE_MULTILINE)。你的看起来可能有点不同,但整体想法是一样的。

self.control = stc.StyledTextCtrl(self, style=wx.TE_MULTILINE)

很多地方都会告诉你它需要SetWrapMode(self, mode),但如果你像我一样开始self.CONTROLNAME,如果你也把自己作为一个论点,你会得到一个错误,因为开头的self.算作参数。但是,如果你的控件是用self.CONTROLNAME定义的,并且你没有将self.CONTROLNAME放在SetWordWrap()函数的开头,那么你也会收到错误,所以要小心。模式必须是0或1-3。例如,我的看起来像这样:self.control.SetWrapMode(mode=1)。自动换行模式选项:

  

0:无|     1:自动换行|     2:字符包裹|     3:白色空间包裹

我的最终定义和自动换行设置如下所示:

self.control = stc.StyledTextCtrl(self, style=wx.TE_MULTILINE)
self.control.SetWrapMode(mode=1)

就是这样!希望这有帮助。

感谢@Chris Beaulieu纠正了模式选项的问题。

答案 1 :(得分:0)

我看到你回答了自己的问题,除了一个小细节外,你在各方面都是正确的。实际上有几种不同的包装模式。与它们对应的类型和值如下:

  • 0:无
  • 1:Word Wrap
  • 2:Character Wrap
  • 3:White Space Wrap

所以你不能输入任何高于0的值来得到自动换行。事实上,如果你输入一个0-3之外的值,你应该最终得不到包装,因为该值不应该被Scintilla识别,这就是stc库。

答案 2 :(得分:0)

使用常量stc.WRAP_NONEstc.WRAP_WORDstc.WRAP_CHARstc.WRAP_WHITESPACE而不是数值会更容易维护。