У меня есть текст в файле, строки могут иметь длину от 50 до 1000 слов. Абзацы построены таким образом. Каждая строка представляет собой новый абзац или пустую строку между абзацами. Я думаю, что это основная часть проблемы, но, возможно, ее можно обойти.
Когда я заполняю текстовое окно в Tkinter и прокручиваю вниз с помощью клавиш со стрелками, все работает нормально. Если я попытаюсь использовать PageDown или PageUp, он всегда промахнется. Вместо пролистывания видимой страницы (40 строк) он перескакивает на 42 строки вниз. Внеся некоторые изменения в код этим утром, я наконец избавился от проблемы с перескакиванием страниц вверх на 43 строки, и теперь она перескакивает только на 42 строки. Это всегда перепрыгивает. Как мне сделать так, чтобы он не перепрыгивал и двигался только вверх, что было бы обычным видимым прыжком из окна?
Одна из идей, которые мне подкинул ИИ, заключалась в том, чтобы сделать разрыв строки в каждом конце каждой строки, а не в конце каждого абзаца, но я начал думать, не будет ли это выглядеть как дерьмо при попытке редактировать текст, потому что разрыв строки портит текст при его редактировании. Прямо сейчас, когда я редактирую его в окне Tkinter, он выглядит так, как обычно в Блокноте или программе текстовых документов. Я также хотел бы сохранить плавное редактирование.
До сих пор я пробовал yview.scroll(1, 'units'), (1, 'pages'). Я попробовал разницу между первой видимой линией и последней видимой линией. Искусственный интеллект кидал мне все, и ничего не помогало. Иногда у меня такое случалось, что после прокрутки вниз, если я нажимаю клавишу со стрелкой вверх или вниз, я автоматически возвращаюсь к началу текста, прежде чем начать прокручивать вниз.
Самая надежная вещь, кроме превышения значения, прямо сейчас с:
Код: Выделить всё
# Bind arrow keys for single line scrolling
self.detail_text.bind('', lambda e: self.detail_text.yview_scroll(-1, 'units'), add='+')
self.detail_text.bind('', lambda e: self.detail_text.yview_scroll(1, 'units'), add='+')
# Bind Page Up/Down to controlled scrolling
self.detail_text.bind('
', lambda e: self.detail_text.yview_scroll(-1, 'pages'), add='+')
self.detail_text.bind('', lambda e: self.detail_text.yview_scroll(1, 'pages'), add='+')
>
Подробнее здесь: https://stackoverflow.com/questions/798 ... -scrolling
Мобильная версия