如何在 wxPython 中为 stc.StyledTextCtrl() 设置自动换行
How to set up word wrap for an stc.StyledTextCtrl() in wxPython
我想知道这个,所以我做了很多 google 搜索,然后想出了 SetWrapMode(self, mode)
函数。但是,它从来没有真正详细过,也没有 真正 说明如何使用它。我最终弄明白了,所以我想我 post 在这里发帖并为想知道如何使 stc.StyledTextCtrl()
自动换行的其他人回答我自己的问题。
好的,当然,首先您需要定义样式文本控件。如果您不知道如何执行此操作,请查看有关 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.
算作参数。但是,如果您的控件是用 self.CONTROLNAME
定义的,并且您没有将 self.CONTROLNAME
放在 SetWordWrap()
函数的开头,您也会遇到错误,因此请小心.模式只需为 0 或 1-3。因此,例如,我的看起来像这样:self.control.SetWrapMode(mode=1)
。自动换行模式选项:
0: None |
1: Word Wrap |
2: Character Wrap |
3: White Space Wrap
我的最终定义和自动换行设置如下所示:
self.control = stc.StyledTextCtrl(self, style=wx.TE_MULTILINE)
self.control.SetWrapMode(mode=1)
就是这样!希望这对您有所帮助。
感谢@Chris Beaulieu 纠正我关于模式选项的问题。
我看到你回答了你自己的问题,除了一个小细节,你在所有方面都是对的。实际上有几种不同的环绕模式。它们对应的类型和取值如下:
- 0: None
- 1:自动换行
- 2:字符换行
- 3: 白色 Space 环绕
因此您不能输入任何大于 0 的值来自动换行。事实上,如果您输入 0-3 之外的值,您最终应该不会换行,因为该值不应该被 Scintilla 识别,这就是 stc 库。
使用常量 stc.WRAP_NONE
、stc.WRAP_WORD
、stc.WRAP_CHAR
和 stc.WRAP_WHITESPACE
代替它们的数值会更易于维护。
我想知道这个,所以我做了很多 google 搜索,然后想出了 SetWrapMode(self, mode)
函数。但是,它从来没有真正详细过,也没有 真正 说明如何使用它。我最终弄明白了,所以我想我 post 在这里发帖并为想知道如何使 stc.StyledTextCtrl()
自动换行的其他人回答我自己的问题。
好的,当然,首先您需要定义样式文本控件。如果您不知道如何执行此操作,请查看有关 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.
算作参数。但是,如果您的控件是用 self.CONTROLNAME
定义的,并且您没有将 self.CONTROLNAME
放在 SetWordWrap()
函数的开头,您也会遇到错误,因此请小心.模式只需为 0 或 1-3。因此,例如,我的看起来像这样:self.control.SetWrapMode(mode=1)
。自动换行模式选项:
0: None | 1: Word Wrap | 2: Character Wrap | 3: White Space Wrap
我的最终定义和自动换行设置如下所示:
self.control = stc.StyledTextCtrl(self, style=wx.TE_MULTILINE)
self.control.SetWrapMode(mode=1)
就是这样!希望这对您有所帮助。
感谢@Chris Beaulieu 纠正我关于模式选项的问题。
我看到你回答了你自己的问题,除了一个小细节,你在所有方面都是对的。实际上有几种不同的环绕模式。它们对应的类型和取值如下:
- 0: None
- 1:自动换行
- 2:字符换行
- 3: 白色 Space 环绕
因此您不能输入任何大于 0 的值来自动换行。事实上,如果您输入 0-3 之外的值,您最终应该不会换行,因为该值不应该被 Scintilla 识别,这就是 stc 库。
使用常量 stc.WRAP_NONE
、stc.WRAP_WORD
、stc.WRAP_CHAR
和 stc.WRAP_WHITESPACE
代替它们的数值会更易于维护。