@StivenHolland
Программист-самоучка

Скроллбар возвращается в дефолтное состояние PyQt5. Что не так?

Пишу интерфейс для текстового редактора, где синхронизирую два скроллбара таким скриптом:

self.list_of_tables = [self.lines,self.text]

def move_other_scrollbars(idx,bar):
    scrollbars = {tbl.verticalScrollBar() for tbl in self.list_of_tables}
    scrollbars.remove(bar)
    for bar in scrollbars:
        print(idx)
        bar.setValue(idx)

    for tbl in self.list_of_tables:
        scrollbar = tbl.verticalScrollBar()
        scrollbar.valueChanged.connect(lambda idx,bar=scrollbar: move_other_scrollbars(idx, bar))


self.lines - это QTextBrowser, который нельзя изменить, он отображает строки, а self.text - это QTextEdit, в котором редактируется сам текст. Я скрыл скроллбар у строк, но не в этом проблема. Перемещается все это синхронно, но стоит начать выделять снизу-вверх, что-то обновляется, видимо, и скроллбар возвращается в 0-вое состояние. Я даже через print(idx) решил выводить значения, и вот, что получил:
80
69
69
89
0
0 (два нуля это момент, где я нажимаю на текст, опуская скроллбар ниже)

Я проанализировал код и понял, что проблема сто процентов в обновлении виджета, в строке: bar.setValue(idx)

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

Скриншот редактора:
61d7fc158fb20743879980.png
  • Вопрос задан
  • 84 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы