Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 21, 2017 22:27:06

Andrew22528
Зарегистрирован: 2015-05-17
Сообщения: 44
Репутация: +  0  -
Профиль   Отправить e-mail  

Автопрокрутка Text tkinter

Не могли бы вы подсказать, как сделать автопрокрутку в виджете Text, в который нельзя писать на определенное количество пикселей в минуту?
Заранее спасибо.

Офлайн

#2 Янв. 21, 2017 22:58:51

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

Автопрокрутка Text tkinter

Попробуйте готовый виджет ScrolledText. Если я правильно помню, то он должен прокручиваться, если добавляется текст, который он не может показать, так, чтобы его было видно.

Офлайн

#3 Янв. 21, 2017 23:15:06

Andrew22528
Зарегистрирован: 2015-05-17
Сообщения: 44
Репутация: +  0  -
Профиль   Отправить e-mail  

Автопрокрутка Text tkinter

А возможно ли сделать так, чтобы при определенном событии текст начинал опускаться?

Офлайн

#4 Янв. 22, 2017 00:33:08

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

Автопрокрутка Text tkinter

Да.
Вот тут достаточно подробно объяснено
Я бы просто повесил бы дебагеры и посмотрел как оно пишет, как в примере и вызвал бы нужные потом мне события с интервалом, хотя такое поведение все же странное. Только не ставьте time.sleep, а ставьте .after()

Офлайн

#5 Янв. 22, 2017 19:13:42

Andrew22528
Зарегистрирован: 2015-05-17
Сообщения: 44
Репутация: +  0  -
Профиль   Отправить e-mail  

Автопрокрутка Text tkinter

А можно пример кода?

Офлайн

#6 Янв. 22, 2017 21:16:54

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

Автопрокрутка Text tkinter

Это пример “перехватчика”.

 #
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)

Офлайн

#7 Янв. 23, 2017 09:05:49

Andrew22528
Зарегистрирован: 2015-05-17
Сообщения: 44
Репутация: +  0  -
Профиль   Отправить e-mail  

Автопрокрутка Text tkinter

Я не понимаю, что делает этот код. Мне надо, чтобы при нажатии на кнопку виджет Text начал прокручиваться по 10px в секунду, например.

Офлайн

#8 Янв. 23, 2017 09:11:39

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

Автопрокрутка Text tkinter

Т.е. я должен написать приложение с перехватчиком. Просмотреть какие данные он передает, потом реализовать такую же передачу в функцию исполнителю с таймером и выложить сюда скрипт?

Офлайн

#9 Янв. 23, 2017 09:34:54

Andrew22528
Зарегистрирован: 2015-05-17
Сообщения: 44
Репутация: +  0  -
Профиль   Отправить e-mail  

Автопрокрутка Text tkinter

Я просто хотел узнать, есть ли такая функция, которая будет прокручивать текст при нажатии на кнопку

Офлайн

#10 Янв. 23, 2017 11:52:04

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

Автопрокрутка Text tkinter

Смотрите

 widget['yscrollcommand'] = scrollbar.set

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

 scrollbar['command'] = widget.yview

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

НО!!! Чтобы использовать эти две функции необходимо предварительно узнать какие данные и при каких событиях они друг другу шлют. Для того, чтобы узнать приведен выше код. Когда Вы узнаете, Вы можете свободно вызывать эти функции вместе для любых виджетов за счет чего сразу и проматывать виджет и изменять положение ползунка.

Отредактировано 4kpt_IV (Янв. 23, 2017 11:52:53)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version