Ich versuche, für einige Code-Hervorhebung in einem wxPython RichTextCtrl pygment zu verwenden.wxPython - Code-Hervorhebung und pygment
Ich kann nicht viel online finden (andere als defekte Links), um dies zu erreichen.
Hier ist ein Beispielcode. Ich habe ein paar verschiedene Formatierer ausprobiert und sie alle versagen. Ich glaube, dass edigra mit pygment und wxpython arbeitet, aber die Quelle ist schwer zu navigieren.
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()
Vielen Dank für jede Hilfe
@Shatmers, ist es eine Voraussetzung, wxRichTextCtrl zu verwenden? Kannst du wxSTC ausprobieren? – Igor
@Igor, nicht unbedingt. Ich werde es mir ansehen. Danke edit: Wie wird das aber mit pygment funktionieren? – Shatnerz
warum brauchst du pygment? Sowohl wxSTC als auch wxRE funktionieren von selbst. Sehen Sie sich das Demo/wx C++ - Beispiel an. – Igor