wxPython - 代码突出显示和pygment

时间:2016-09-23 16:45:49

标签: python wxpython wxwidgets

我正在尝试利用pygment在wxPython RichTextCtrl中突出显示某些代码。

我无法找到关于实现此目的的在线(除了断开的链接)。

以下是一些示例代码。我尝试过几种不同的格式化程序,但都失败了。我相信editra使用pygment和wxpython,但源很难导航。

import wx
import wx.richtext

from pygments import highlight
from pygments.lexers import get_lexer_by_name
from pygments.formatters.rtf import RtfFormatter


lexer = get_lexer_by_name("python", stripall=True)
formatter = RtfFormatter()

code = """ # Comment
a = 5
print(a)
print(b)
"""

formatted_code = highlight(code, lexer, formatter)

########################################################################
class MyFrame(wx.Frame):

    # ----------------------------------------------------------------------
    def __init__(self):
        wx.Frame.__init__(self, None, title='Richtext Test')

        sizer = wx.BoxSizer(wx.VERTICAL)
        self.rt = wx.richtext.RichTextCtrl(self)
        self.rt.SetMinSize((300, 200))
        self.rt.ChangeValue(formatted_code)

        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(self.rt, 1, wx.EXPAND | wx.ALL, 6)

        self.SetSizer(sizer)
        self.Show()


# ----------------------------------------------------------------------
if __name__ == "__main__":
    app = wx.App(False)
    frame = MyFrame()
    app.MainLoop()

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

我最终使用了评论中建议的StyledTextCtrl。事实证明,wxPython源包含2个演示,其中第2个演示正是我尝试的。我会发布代码,但它是~400行。