我有一个在 TextCtrl 中显示 json 的 wxpython 应用程序。如何使用 StyledTextCtrl 正确突出显示该 json?只是单行更改还是更大?
顺便说一句,我创建了 jsyntaxpane,它是一个衬里来突出几种语言。太糟糕了,我现在需要 wxPython。
我有一个在 TextCtrl 中显示 json 的 wxpython 应用程序。如何使用 StyledTextCtrl 正确突出显示该 json?只是单行更改还是更大?
顺便说一句,我创建了 jsyntaxpane,它是一个衬里来突出几种语言。太糟糕了,我现在需要 wxPython。
StyledTextCtrl 应该适合你。但它没有内置的 JSON 词法分析器。
我会按以下顺序尝试选项:
stc.STC_LEX_AUTOMATIC
给 StyledTextCtrlSetLexer()
并查看它是否正确突出显示您的 json希望有帮助。
我正在使用 Python 3.7,并且可以使用用于 JSON 的词法分析器。您可以使用以下内容。
stc.StyledTextCtrl.__init__(self, parent)
self.SetLexer(stc.STC_LEX_JSON)
除此之外,还有其他属性在将 StyledTextCtrl 用于 JSON 时可能很有用。这些属性用于作为普通 JSON 一部分的各种字段的字体大小和颜色。
self.StyleSetSpec(stc.STC_JSON_DEFAULT, "fore:#000000,face:%(helv)s,size:%(size)d" % fonts)
self.StyleSetSpec(stc.STC_JSON_NUMBER, "fore:#007F7F,size:%(size)d" % fonts)
self.StyleSetSpec(stc.STC_JSON_KEYWORD, "fore:#007F7F,bold,size:%(size)d" % fonts)
self.StyleSetSpec(stc.STC_JSON_STRING, "fore:#7F0000,size:%(size)d" % fonts)
self.StyleSetSpec(stc.STC_JSON_PROPERTYNAME, "fore:#FF5733,size:%(size)d" % fonts)