【问题标题】:PyQt4: Auto completion in Qscintilla and horizontal scrollingPyQt4:Qscintilla 中的自动完成和水平滚动
【发布时间】:2014-06-04 16:27:18
【问题描述】:

如果自动完成阈值设置为 1,我想在 html 文件的自动完成列表中显示所有属性和标签。我已尝试使用此代码来使用 API,我在将文件加载到新 mdi 子项中后设置此代码(子窗口)但它不工作:

lexer=Qsci.QsciLexerHTML()
api = Qsci.QsciAPIs(lexer)
## Add autocompletion strings
api.add("aLongString")
api.add("aLongerString")
api.add("aDifferentString")
api.add("sOmethingElse")
## Compile the api for use in the lexer
api.prepare()
self.activeMdiChild().setAutoCompletionSource(Qsci.QsciScintilla.AcsAPIs)
self.activeMdiChild().setLexer(lexer)

我的水平滚动条一直可见,我想将它设置为需要滚动条。请告诉如何完成这两个任务。

【问题讨论】:

    标签: python autocomplete scroll pyqt4 qscintilla


    【解决方案1】:

    除了未能设置auto-completion threshold,您的示例代码似乎没有任何问题。这是一个最小的工作示例:

    from PyQt4 import QtGui, Qsci
    
    class Window(Qsci.QsciScintilla):
        def __init__(self):
            Qsci.QsciScintilla.__init__(self)
            lexer = Qsci.QsciLexerHTML(self)
            api = Qsci.QsciAPIs(lexer)
            api.add('aLongString')
            api.add('aLongerString')
            api.add('aDifferentString')
            api.add('sOmethingElse')
            api.prepare()
            self.setAutoCompletionThreshold(1)
            self.setAutoCompletionSource(Qsci.QsciScintilla.AcsAPIs)
            self.setLexer(lexer)
    
    if __name__ == "__main__":
    
        import sys
        app = QtGui.QApplication(sys.argv)
        window = Window()
        window.show()
        app.exec_()
    

    滚动条按需功能无法真正解决,除非您愿意自己重新实现所有内容(这并不容易)。底层 Scintilla 控件不直接支持自动水平滚动条隐藏,因为它涉及潜在的非常昂贵的计算(即确定最长的行)。大多数使用 Scintilla/Qscintilla 的人只是学会忍受一直存在的水平滚动条。

    【讨论】:

    • 你能告诉我如何从 .xml 之类的文件中加载 api,以及在 api 的 load() 方法中使用了哪些类型的文件。
    • 这篇文章救了我,因为事实证明(至少在最新的 PyQt 中)将 self 作为参数提供给词法分析器是必要的,所以如果你只写@ 987654324@添加的API项不会显示。因此,尽管 kidstrythisathome.com/2011/08/… 看起来很有希望,但我无法让它发挥作用!
    猜你喜欢
    • 1970-01-01
    • 2013-10-04
    • 1970-01-01
    • 2012-10-23
    • 2019-05-06
    • 1970-01-01
    • 2020-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多