PyQt4: автоматическое завершение в Qscintilla и горизонтальная прокрутка

Я хочу показать все атрибуты и теги в списке автозаполнения HTML-файла, если для порога автозаполнения установлено значение 1. Я пытался использовать этот код для использования 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)

и моя горизонтальная полоса прокрутки видна все время, я хочу установить ее как scrollbarasneeded. пожалуйста, расскажите, как сделать эти две задачи.

1 ответ

Помимо невозможности установить порог автозаполнения, в вашем примере кода нет ничего плохого. Вот минимальный рабочий пример:

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, просто учатся мириться с вездесущей горизонтальной полосой прокрутки.

Другие вопросы по тегам