Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.
Создание простого текстового редактор с помощью объекта tkinter.Text библиотеки tkinter
В библиотеке tkinter есть очень не плохой текстовый редактор, реализуемый через класс tkinter.Text. Попробуем использовать этот инструмент для создания простого редактора.
Ниже представлена программа, реализующая простые функции редактора (hbceyrb 1-2). На рисунках 3-4 представлены окна редактора. Реализованы следующие функции: 1. Набор текста. 2. Сохранение текста в файл. 3. Загрузка текста из файла. 4. Откат действий (undo). 5. Восстановление действий (redo). 6. Очистка редактора.
Пояснения к программе - текстовом редакторе
- Не буду останавливать на меню (tkinter.Menu), так как в предыдущей статье эта тема изложена достаточно полно. В данной программе реализован двухуровневый вариант меню.
- Для того, чтобы привязать полосу прокрутки к редактору нужно в начале создать объект, выполнив конструктор: sc=tk.Scrollbar(), а потом сделать привязку: yscrollcommand=sc.set.
- При создании редактора устанавливаем перенос по словам: wrap="word".
- Для открытия и сохранения файлов используем стандартные диалоговые окна tkinter: filedialog.asksaveasfilename(), filedialog.askopenfilename().
- Для управления текстом используем набор методов объекта tkinter.Text(): 1. Удаление текста Text.delete(). При этом первый параметр указывает на на начало удаляемого файла с указанием строки и символа, второй параметр указывает на конец удаляемого фрагмента. 2. Получить текст из текстового редактора: Text.get(), при этом как и в предыдущем случае параметрами указывается начало и конец получаемого файла. 3. Text.insert() - вставка текста в текущее положение в тексте. 4. Text.edit_undo() - откатить последнее действие. 5. Text.edit_redo() - восстановить последнее действие.
- Наконец отмечу обработку нажатия клавиш (ctrl+z, ctrl+x). Мы связываем нажатие клавиши в окне self.bind('<KeyPress>', self.key), но можно сделать связав нажатие в поле самого редактора self.text.bind('<KeyPress>', self.key).
Пока всё! Продолжение следует...
Пишите свои предложения и замечания, и занимайтесь программированием, а также проектированием баз данных, хотя бы для поддержания уровня интеллекта.