2

如果自动完成阈值设置为 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)

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

4

1 回答 1

2

除了未能设置自动完成阈值之外,您的示例代码似乎没有任何问题。这是一个最小的工作示例:

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 的人只是学会忍受一直存在的水平滚动条。

于 2014-04-20T17:43:05.397 回答