Пишу интерфейс для текстового редактора, где синхронизирую два скроллбара таким скриптом:
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)
Помогите избавиться от такого обновления, чтобы он работал корректно. Скрипт выше не вырван из контекста, я описал два виджета, с которым он работает - он довольно-таки самостоятельный
Скриншот редактора: