2017-02-06 2 views
0

Mein Problem:

Hallo! Ich habe jetzt für 2 Tage gegoogelt, und ich habe noch keine Antwort gefunden :(Was ich versuche zu tun ist, wenn ich ein Schlüsselwort eingeben (zB "True" und "False") würde dieses Wort rotwx Python - Farbcodierung - StyledTextctrl

werden

import wx 
import wx.stc 
import os, sys 

ich versucht habe:

ich derzeit dieses Modul importiert

i Code versucht haben, von hier: Here aber das bedeutet nicht „einige“ Schlüsselwort, sondern „alle“ Wort, um es nächste

Screenshot:

Jede Hilfe Sehr

+0

können Sie mehr Code zeigen? I.e. Wie hast du ein Scintilla-Objekt erstellt und den Lexer gesetzt? – Igor

+0

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

+0

Muss ich Scintilla installieren? –

Antwort

0

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 
+0

Ok Danke für die Hilfe alle! Ich werde versuchen, was ich habe –