具有QScintilla的自动补全功能

时间:2020-03-07 00:35:19

标签: python-3.x autocomplete pyqt5 scintilla qscintilla

我尝试为文本创建颜色并使其自我完成。

我发现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'。

0 个答案:

没有答案