Уведомления

Группа в Telegram: @pythonsu

#1 Май 18, 2018 21:59:41

Ubhra
От:
Зарегистрирован: 2009-03-04
Сообщения: 133
Репутация: +  2  -
Профиль   Отправить e-mail  

Tkinter, не работает скрол в Text

Добрый день.
Бар в текстовый виджет засунул, и текст даже получается скролить, но сам ползунок скрола статичный + курсор убегает вниз и без прокрутки не видно что печатается.

 text=Text(root)
text.pack(fill='both',expand=True)
scroll=Scrollbar(text)
scroll.pack(side='right', fill = 'y')



Отредактировано Ubhra (Май 18, 2018 22:00:11)

Офлайн

#2 Май 19, 2018 08:02:04

rami
Зарегистрирован: 2018-01-08
Сообщения: 280
Репутация: +  71  -
Профиль   Отправить e-mail  

Tkinter, не работает скрол в Text

Нужно не только вставить виджеты, но и “сказать” им что они работают в паре:

 text=Text(root)
text.pack(fill='both',expand=True)
scroll=Scrollbar(text,command=text.yview)  #скролбару даём команду следить за текстом
scroll.pack(side='right', fill = 'y')
text.configure(yscrollcommand=scroll.set)   #тексту даём команду следить за скролбаром

Но вообще, есть специальный виджет ScrolledText:
 from tkinter import Tk
from tkinter.scrolledtext import ScrolledText
root=Tk()
st=ScrolledText(root,width=120,height=20,font='Menlo 12')  #ширина в символах, высота в строках
st.pack()
root.mainloop()

Офлайн

#3 Июнь 1, 2018 18:47:35

NiOl
Зарегистрирован: 2018-05-07
Сообщения: 19
Репутация: +  1  -
Профиль   Отправить e-mail  

Tkinter, не работает скрол в Text

1. Вы засунули скрол в нутрь текста, не знаю, может это корректно, но обычно его ставят РЯДОМ, а не внутрь.
2. Для промотки нужно назначить обработчик текста в событие скрола (что бы скролом мотать текст) и обработчик скрола в событие текста (чтобы двигаясь по тексту синхронизировать скрол)

 import tkinter as tk
w=tk.Tk()
s=tk.Scrollbar(w)
s.grid(row=0,column=1,sticky=tk.N+tk.S)
t=tk.Text(w,width=50,wrap=tk.NONE,yscrollcommand=s.set)
t.grid(row=0,column=0)
s.config(command=t.yview)
for i in range(100):
  t.insert(tk.END,'Line %s\n'%(i))
w.mainloop()

Офлайн

#4 Июнь 1, 2018 19:37:26

rami
Зарегистрирован: 2018-01-08
Сообщения: 280
Репутация: +  71  -
Профиль   Отправить e-mail  

Tkinter, не работает скрол в Text

NiOl
1. Вы засунули скрол в нутрь текста, не знаю, может это корректно, но обычно его ставят РЯДОМ, а не внутрь.
Да, вы правы, так не правильно, в этом случае скрол закрывает собой часть виджета Text. Я просто в тот код что был в вопросе добавил привязку к прокрутке. И не обратил на это внимание. Спасибо за внимательность.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version