我尝试为文本创建颜色并使其自我完成。
我发现QScintilla擅长于此,但是如果我使用特殊字符,它将不起作用。
自动完成示例:
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.Qsci import *
class MyLexer(QsciLexerCustom):
def __init__(self, parent):
super(MyLexer, self).__init__(parent)
pass
class CustomMainWindow(QMainWindow):
def __init__(self):
super(CustomMainWindow, self).__init__()
self.setGeometry(300, 300, 800, 400)
self.setWindowTitle("QScintilla Test")
self.__frm = QFrame(self)
self.__frm.setStyleSheet("QWidget { background-color: #ffeaeaea }")
self.__lyt = QVBoxLayout()
self.__frm.setLayout(self.__lyt)
self.setCentralWidget(self.__frm)
self.__myFont = QFont()
self.__myFont.setPointSize(14)
self.__editor = QsciScintilla()
self.__editor.setUtf8(True)
self.__editor.setFont(self.__myFont)
self.__editor.setMarginType(0,QsciScintilla.NumberMargin)
self.__editor.setMarginWidth(0,"000")
self.__lexer = MyLexer(self.__editor)
api = QsciAPIs(self.__lexer)
api.add(r'\\begin')
api.add('end')
api.prepare()
self.__editor.setLexer(self.__lexer)
self.__editor.setAutoCompletionThreshold(1)
self.__editor.setAutoCompletionSource(QsciScintilla.AcsAPIs)
self.__lyt.addWidget(self.__editor)
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
QApplication.setStyle(QStyleFactory.create('Fusion'))
myGUI = CustomMainWindow()
sys.exit(app.exec_())
\begin
它不起作用。
您有解决方案或其他库吗? 它是用于乳胶自动补全的,因此我会得到很多“ \”。 我找到了这个解决方案,但是我不明白如何用python编写它。 https://byman.it/site/index.php?option=com_content&view=article&id=323:scintillanet-autocomplete-for-special-char&catid=70&Itemid=154
我也想实现但不理解的解决方案: https://github.com/jacobslusser/ScintillaNET/wiki/Character-Autocompletion#finishing-touch
修改
我对空格有同样的问题。 它不显示空格后的内容。
If I love you.
它只会显示'If'。