2016-09-23 74 views
0

我想利用python在wxPython RichTextCtrl中突出显示一些代码。wxPython - 代码高亮和段

我无法在网上找到很多关于实现这一点的信息(除了断开的链接)。

这是一些示例代码。我尝试了几种不同的格式化程序,它们都失败了。我相信editra使用python和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() 

感谢所有帮助

+0

@发烧友,是否需要使用wxRichTextCtrl?你可以尝试wxSTC吗? – Igor

+0

@Igor,不一定。我会看看它。谢谢 编辑:这将如何与python工作? – Shatnerz

+0

你为什么需要python? wxSTC和wxRE都可以自行工作。看看演示/ wx C++示例。 – Igor

回答

0

我结束了使用StyledTextCtrl作为意见提出。事实证明,wxPython源代码中包含了2个演示程序,其中的第2个演示程序正是我所尝试的。我会发布代码,但它是〜400行。