【问题标题】:Qscintilla2 AutoCompletion and AutoIdentationQscintilla2 自动完成和自动识别
【发布时间】:2015-04-30 04:56:29
【问题描述】:

我在我的项目中实现了这个类:

class ScriptEditorTextBox(QsciScintilla):

def __init__(self, parent):
    QsciScintilla.__init__(self)

    #Lexer
    lexer = QsciLexerPython()

    #AutoCompletion
    api = Qsci.QsciAPIs(lexer)
    api.add('aLongString')
    api.add('aLongerString')
    api.add('aDifferentString')
    api.add('sOmethingElse')
    api.prepare()

    self.setLexer(lexer)
    self.setAutoCompletionThreshold(1)
    self.setAutoCompletionSource(QsciScintilla.AcsAPIs)

    #LineHighlight
    self.setCaretLineVisible(True)
    self.setCaretLineBackgroundColor(QColor("gainsboro"))

    #AutoIndentation
    self.setAutoIndent(True)
    self.setIndentationGuides(True)
    self.setIndentationsUseTabs(True)
    self.setIndentationWidth(4)

    #Margins
    self.setMarginsBackgroundColor(QColor("gainsboro"))
    self.setMarginsFont(QFont("Consolas", 9, 87)) 
    self.setMarginLineNumbers(1, True)
    self.setMarginLineNumbers(2, False)
    self.setMarginWidth(1, QString().setNum(10))
    self.setMarginWidth(2, 10)
    self.connect(self, SIGNAL("linesChanged()"), self._linesChanged)

def _linesChanged(self):
    width = QString().setNum(self.lines() * 10)
    self.setMarginWidth(1, width)

一切开始都很好,但是当我按下回车后:它只是不会自动缩进。而且,也没有自动完成(但我什至不知道它应该自动完成什么)。

如果有任何建议,我将不胜感激。

【问题讨论】:

    标签: python qt pyqt qscintilla


    【解决方案1】:

    这两个问题都是由于未能保持对词法分析器的正确引用造成的。

    如果您这样做,示例代码将起作用:

        lexer = QsciLexerPython(self)
    

    或者这个:

        self.lexer = QsciLexerPython()
        ...
        api = Qsci.QsciAPIs(self.lexer)
        ...
        self.setLexer(self.lexer)
    

    【讨论】:

    • 非常感谢,这行得通。但它仍然不会影响我的 python 标准库,它只会从当前文档自动完成。而且我无法弄清楚 [: and enter] 之后的自动缩进发生了什么变化,因为现在没有自动缩进。
    • @Mad.Lobster。好吧,显然它无法从您尚未加载的 api 自动完成。而且我不知道你对自动缩进的意思是什么:它完全符合我的预期。
    • 我不明白为什么,但我的自动完成功能只有在我将 self 作为父级和 setLexer() 时才有效。
    猜你喜欢
    • 1970-01-01
    • 2021-07-13
    • 2012-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-12
    • 1970-01-01
    • 2022-01-26
    相关资源
    最近更新 更多