Форум сайта python.su
Собственно, вопрос глупый, но застопорило и дойти сам не могу. Прошу у вас помощи:
Есть в главном окне два фрейма. На одном расположена кнопка, на другом поле текста (text).
Нужно, чтобы при нажатии кнопки в поле text добавлялась строка с нужным текстом
Заранее благодарю
Офлайн
Рецептик не мой, но несколько модифицированный под собственные нужды.
Оригинала не осталось.
Представляет из себя топлевел окно с текстом, который можно динамически добавлять.
import Tkinter as tk
class ScrolledText(tk.Frame):
def __init__(self, parent=None, text='', file=None):
self.window = tk.Toplevel()
self.window.title('Лог событий')
self.window.protocol('WM_DELETE_WINDOW', self.window.withdraw)
# if parent:
# self.window.transient(parent)
self.window.withdraw()
tk.Frame.__init__(self, self.window)
self.pack(expand=tk.YES, fill=tk.BOTH)
self.makewidgets()
self.set(text, file)
def makewidgets(self):
sbar = tk.Scrollbar(self)
text = tk.Text(self, relief=tk.SUNKEN,font=("Monotype Corsiva", 15, "italic"))
sbar.config(command=text.yview)
text.config(yscrollcommand=sbar.set)
sbar.pack(side=tk.RIGHT, fill=tk.Y)
text.pack(side=tk.LEFT, expand=tk.YES, fill=tk.BOTH)
self.text = text
def set(self, text='', file=None):
if file:
text = open(file, 'r').read()
self.text.delete('1.0', tk.END)
self.text.insert('1.0', text)
self.text.mark_set(tk.INSERT, '1.0')
self.text.focus()
def write(*args):
strings = list(args)
self = strings.pop(0)
for str in strings:
self.text.insert(tk.END, str)
self.text.insert(tk.END, ' ')
self.text.insert(tk.END, '\n')
self.window.update_idletasks()
self.text.focus()
def gettext(self,from_pos='1.0'):
return self.text.get(from_pos, tk.END+'-1c')
Отредактировано (Сен. 8, 2010 11:24:17)
Офлайн