würde geschätzt Zunächst leiten Sie eine Klasse, die eine Unterklasse von wxStyledTextCtrl
class Script:public wxStyledTextCtrl
Der folgende Code für Lua, aber die gleiche Logik ist anwendbar ist, jede Sprache. Sie müssen es also für Python ändern und den Code zu Ihrem Konstruktor hinzufügen.
SetLexer(wxSTC_LEX_LUA); //Dont forget to set the lexer to Python
m_LuaKeywords =_T("and break do else elseif end false for function if in local nil not or repeat return then true until while pairs ipairs");
SetWordChars(wxT("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMONPQRSTUVWXYZ._"));
SetKeyWords(0,m_LuaKeywords);
SetFont(font);
StyleSetForeground(0, wxColour(128, 128, 128)); // White space
StyleSetForeground(wxSTC_LUA_COMMENT, wxColour(0, 127, 0)); // Block Comment
font.SetPointSize(10); font.Italic();
StyleSetFont(wxSTC_LUA_COMMENT, font);
StyleSetUnderline(wxSTC_LUA_COMMENT, false);
StyleSetForeground(wxSTC_LUA_COMMENTLINE, wxColour(0, 127, 0)); //Line Comment
StyleSetFont(wxSTC_LUA_COMMENTLINE,font); //doc. Comment
StyleSetUnderline(wxSTC_LUA_COMMENTLINE, false);
font.SetPointSize(11);font.SetStyle(wxFONTSTYLE_NORMAL);
StyleSetForeground(wxSTC_LUA_NUMBER, wxColour(127, 127, 127)); // Number
StyleSetFont(wxSTC_LUA_NUMBER, font);
StyleSetForeground(wxSTC_LUA_STRING, wxColour(0, 0, 127)); // Double quoted string
StyleSetBold(wxSTC_LUA_STRING, true);
StyleSetUnderline(wxSTC_LUA_STRING, false);
Wenn Sie wx/stc/stc.h
betrachten, sehen Sie, dass die Staaten für Python sind wie folgt:
/// Lexical states for SCLEX_PYTHON
#define wxSTC_P_DEFAULT 0
#define wxSTC_P_COMMENTLINE 1
#define wxSTC_P_NUMBER 2
#define wxSTC_P_STRING 3
#define wxSTC_P_CHARACTER 4
#define wxSTC_P_WORD 5
#define wxSTC_P_TRIPLE 6
#define wxSTC_P_TRIPLEDOUBLE 7
#define wxSTC_P_CLASSNAME 8
#define wxSTC_P_DEFNAME 9
#define wxSTC_P_OPERATOR 10
#define wxSTC_P_IDENTIFIER 11
#define wxSTC_P_COMMENTBLOCK 12
#define wxSTC_P_STRINGEOL 13
#define wxSTC_P_WORD2 14
#define wxSTC_P_DECORATOR 15
können Sie mehr Code zeigen? I.e. Wie hast du ein Scintilla-Objekt erstellt und den Lexer gesetzt? – Igor
Sie müssen "True" und "False" in die Keyword-Liste aufnehmen (Sie können mehr als 1 haben) und dann dieser bestimmten Liste eine Farbe zuweisen. Unnötig zu sagen, wenn Sie den Lexer auf Python setzen, wird es Sie auch vor ziemlich viel Arbeit retten. – macroland
Muss ich Scintilla installieren? –