2016-09-23 75 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行。