Форум сайта python.su
Добрый день.
Бар в текстовый виджет засунул, и текст даже получается скролить, но сам ползунок скрола статичный + курсор убегает вниз и без прокрутки не видно что печатается.
text=Text(root) text.pack(fill='both',expand=True) scroll=Scrollbar(text) scroll.pack(side='right', fill = 'y')
Отредактировано Ubhra (Май 18, 2018 22:00:11)
Офлайн
Нужно не только вставить виджеты, но и “сказать” им что они работают в паре:
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) #тексту даём команду следить за скролбаром
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()
Офлайн
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()
Офлайн
NiOlДа, вы правы, так не правильно, в этом случае скрол закрывает собой часть виджета Text. Я просто в тот код что был в вопросе добавил привязку к прокрутке. И не обратил на это внимание. Спасибо за внимательность.
1. Вы засунули скрол в нутрь текста, не знаю, может это корректно, но обычно его ставят РЯДОМ, а не внутрь.
Офлайн