Tkinter PageUp/Down не отображается прокрутка страницыPython

Программы на Python
Ответить
Anonymous
 Tkinter PageUp/Down не отображается прокрутка страницы

Сообщение Anonymous »

Бьюсь с этим уже пару дней и не могу получить никакого реального ответа.
У меня есть текст в файле, строки могут иметь длину от 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»