Найти - Пользователи
Полная версия: Автопрокрутка Text tkinter
Начало » GUI » Автопрокрутка Text tkinter
1
Andrew22528
Не могли бы вы подсказать, как сделать автопрокрутку в виджете Text, в который нельзя писать на определенное количество пикселей в минуту?
Заранее спасибо.
4kpt_IV
Попробуйте готовый виджет ScrolledText. Если я правильно помню, то он должен прокручиваться, если добавляется текст, который он не может показать, так, чтобы его было видно.
Andrew22528
А возможно ли сделать так, чтобы при определенном событии текст начинал опускаться?
4kpt_IV
Да.
Вот тут достаточно подробно объяснено
Я бы просто повесил бы дебагеры и посмотрел как оно пишет, как в примере и вызвал бы нужные потом мне события с интервалом, хотя такое поведение все же странное. Только не ставьте time.sleep, а ставьте .after()
Andrew22528
А можно пример кода?
4kpt_IV
Это пример “перехватчика”.

 #
class DebugScrollbar(Scrollbar):
    def set(self, *args):
        print "SCROLLBAR SET", args
        Scrollbar.set(self, *args)
#
class DebugListbox(Listbox):
    def yview(self, *args):
        print "LISTBOX YVIEW", args
        Listbox.yview(self, *args)
#
scrollbar = DebugScrollbar()
scrollbar.pack(side=RIGHT, fill=Y)
#
listbox = DebugListbox(yscrollcommand=scrollbar.set)
listbox.pack()
#
scrollbar.config(command=listbox.yview)
Andrew22528
Я не понимаю, что делает этот код. Мне надо, чтобы при нажатии на кнопку виджет Text начал прокручиваться по 10px в секунду, например.
4kpt_IV
Т.е. я должен написать приложение с перехватчиком. Просмотреть какие данные он передает, потом реализовать такую же передачу в функцию исполнителю с таймером и выложить сюда скрипт?
Andrew22528
Я просто хотел узнать, есть ли такая функция, которая будет прокручивать текст при нажатии на кнопку
4kpt_IV
Смотрите

 widget['yscrollcommand'] = scrollbar.set

В этой строчке к изменению области отображения виджета по вертикали привязывается прокрутка, а именно метод set прокрутки. Эта связь отвечает за смещение ползунка полосы прокрутки со смещением области в виджете.

 scrollbar['command'] = widget.yview

В этой строчке к изменению положения полосы прокрутки привязывается изменение области отображения виджета, а именно метод yview виджета. Эта связь отвечает за смещение области отображения виджета со смещением ползунка.

НО!!! Чтобы использовать эти две функции необходимо предварительно узнать какие данные и при каких событиях они друг другу шлют. Для того, чтобы узнать приведен выше код. Когда Вы узнаете, Вы можете свободно вызывать эти функции вместе для любых виджетов за счет чего сразу и проматывать виджет и изменять положение ползунка.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB