2017-02-06 8 views
0

Моя проблема:

Привет! Я уже 2 дня работаю в поисковых системах, и я еще не нашел ответа :(Что я пытаюсь сделать, когда я набираю ключевое слово (например, «Истина» и «Ложно»), что слово станет краснымwx Python - цветовая кодировка - StyledTextctrl

я в настоящее время импортируется этот модуль:

import wx 
import wx.stc 
import os, sys 

Я пробовал:

я попробовал код здесь: Here , но это не делает «некоторые» ключевое слово, но «все» слово рядом с ним

Screenshot:

Любая помощь будет очень Оценил

+0

вы можете показать больше кода? То есть как вы создали объект Scintilla и установили lexer? – Igor

+0

Вы должны включить «True» и «False» в список ключевых слов (вы можете иметь более одного), а затем назначить цвет этому конкретному списку. Излишне говорить, что если вы установите lexer на Python, это также избавит вас от довольно небольшой работы. – macroland

+0

Нужно ли устанавливать сцинтиллу? –

ответ

0

Сначала выведем класс, который является подклассом wxStyledTextCtrl

class Script:public wxStyledTextCtrl 

Следующий код для Lua, но та же логика применима к любой язык. Поэтому вам нужно будет изменить его для Python и добавить код в свой конструктор.

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); 

Если посмотреть на wx/stc/stc.h, вы увидите, что состояния для Python являются следующие:

/// 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

Хорошо Спасибо за помощь всем! Я попробую, что у меня есть –

 Смежные вопросы

  • Нет связанных вопросов^_^