Текстовый редактор на Python (Tkinter)
Текстовый редактор на Python (Tkinter)
Программисты часто говорят что не стоит изобретать велосипед писав простые аналоги уже существующего софта. Но ведь иногда простые на первый взгляд вещи, могут быть сложны в реализации. Ну и с другой стороны, что делать если просто хочется проверить свой скилл в программировании чисто для себя. В таких ситуациях и начинаешь реализовывать простенькие проекты создавая аналоги существующего софта. Вот и в один из таких моментов я и решил написать свой блокнот или же простенький текстовый редактор на python (Tkinter). Далее будет ссылка на GitHub репозиторий проекта.
Писать его я решил на языке Python. Интерфейс я буду создавать используя библиотеку tkinter. Чтобы её установить нужно выполнить следующие команды (в зависимости от вашей ОС):
Windows в командной строке выполняем:
Linux в терминале выполняем (Дистрибутивы на основе Debian):
И так, основную библиотеку я установил, теперь перейдём к подключению самого tkinter и других его функций.
Подключаем библиотеку Tkinter:
Для того чтобы добавить возможность открывать и сохранять файлы, нам нужно диалоговое окно. Для этого в Tkinter есть свои функции. Импортируем их:
Если у нас будут возникать ошибки, нам их нужно красиво выводить. Для этого импортируем следующую функцию:
Ну и для информационных окон есть своя функция:
Теперь давайте сделаем интерфейс программы. Переменная root будет отвечать за вызов функций из библиотеки
В дальнейшем мы будем обращаться к ней чтобы задавать параметры отображения окна программы, вывод окон и тд. К примеру создадим заголовок программы
Укажем размеры окна
Теперь создадим текстовое поле
Какое текстовое поле без скроллбара, нужно и его добавить и привязать к текстовому полю чтобы он понимал когда нужно прокручивать текстовое поле
Сам интерфейс я решил отображать с помощью метода pack. В этой библиотеки есть много разных вариантов отображения интерфейса и позиционирование объектов на окне. Детально можете ознакомиться в документации
Выводим интерфейс:
Что это за программа если в ней нет меню. В Tkinter для меню есть специальная функция menu:
Определяем список кнопок в выпадающем меню Файл
Теперь определим структуру всего меню
Теперь отобразим меню в самом интерфейсе программы:
Это все вроде как хорошо, но нужно научить редактор основным его функциям. А его основные функции это: открытие файла, сохранение и создание нового файла. По этому давайте определяем переменную которая будет хранить имя нового файла
и напишем функцию для создание нового файла
Работает все очень просто, мы просто очищаем текстовое поле от всех символов Теперь пишем функцию сохранением файла с стандартным именем
Давайте создадим функцию для сохранения файла с возможностью выбора места хранения файла и имени
И напишем функцию по открытию файла нашим редактором
и напоследок давайте напишем функцию по открытию информационного окна с описанием нашей программы
Вот и всё, наш текстовой редактор готов. Вот так он выглядит:
В идеале можно его скомпелировать в исполняемый файл библиотекой pyinstaller. Но об этом в следующий раз.
Ссылки:
Исходный код проекта можно посмотреть в этом репозитории: cdl-notepad
Русские Блоги
Используйте Python, чтобы сделать «электронную записную книжку»
Содержание дела
1. Запишите содержимое в файл.
2. Отобразите все записанное содержимое.
3. Удалите контент, который больше не нужен.
Учебные материалы по Python или нужен код, видео плюс обучающая группа Python: 960410445
Формальная программа «Блокнот» на самом деле очень сложна. Поиск на рынке мобильных телефонов может найти тысячи приложений. Требования к дизайну и функциям для взаимодействия с пользователем и других аспектов очень высоки, а конкуренция жесткая. Мы находимся здесь для целей обучения и в основном сосредоточены на изучении файловых операций, поэтому все относительно упрощено.
В разделе «Задача» программа фактически была разделена на 3 части: сохранение, отображение и удаление. Это эквивалентно тому, чтобы помочь нам разработать общую структуру программы. Следуя этой идее, мы сначала используем форму «псевдокода», чтобы четко разобраться в процессе.
Записать содержимое в файл
1. Получите контент для записи (обратите внимание на контент), здесь есть проблема, которую нужно решить, как ее получить?
2. Откройте файл для записи
3. Сохранить содержание заметки
Показать содержимое файла
1. Откройте файл для чтения
2. Читайте содержимое файла построчно
Удалить нежелательный контент
1. Первый вопрос, как найти нежелательный контент?
2. В процессе отображения файла нумеруйте содержимое в соответствии со строкой
3. Откройте файл для чтения
6. Откройте файл для записи
7. Переберите все строки, пропустите строки, которые нужно удалить, и запишите
Общая проблема
Все три апплета должны читать и записывать один и тот же файл, иначе они не могут взаимодействовать друг с другом
Поскольку четвертая общая проблема связана с тремя небольшими программами, мы начнем с этой проблемы. Метод очень прост, всего одна строка кода:
Эта строка кода просто определяет строковую переменную filename, которая представляет имя файла заметки, который мы используем. Дело в том, как использовать эту строку кода.
Библиотека
В начале нашего курса мы выступали за то, насколько богата библиотека Python. Давайте сами определим библиотеку сегодня. Вышеуказанная программа с одной строкой кода, которую мы сохраняем как common.py, не вводит неправильное имя файла, потому что мы будем использовать его позже.
На этом этапе файл common.py называется библиотекой, хотя он выглядит очень просто, но это библиотека. Мы здесь в основном с целью демонстрации библиотечных приложений. Из-за такой простой функции нет необходимости использовать метод библиотеки.
Теперь у нас есть библиотека, есть три способа использования библиотеки, мы используем исходный код, чтобы показать:
Эти три метода имеют разные сценарии применения, и вы можете выбирать их в соответствии со своими предпочтениями.
Теперь вы можете написать первый апплет:
Вторая небольшая программа отображает содержимое файла заметок:
Третья небольшая программа, удалите ненужные строки в файле заметок:
подводить итоги:
Файловая операция является основной операцией программного обеспечения, которая очень полезна
Файл имеет различные форматы, такие как музыка, видео, фото, текст
Файл программы представляет собой текстовый файл, то есть файл, состоящий из слов и символов. Файл, записанный нашей программой-блокнотом, также является текстовым файлом.
Работа с файлом должна быть осторожной, чтобы не уничтожить полезный файл
Библиотека расширений (или: библиотека расширений) является основной формой функции расширения Python. Python имеет большое количество ресурсов библиотеки расширений, выпущенных различными компаниями и организациями в мире. Это больше всего на всех языках. Python также называют «склеенным языком» «, что означает, что функции библиотеки расширений склеены
Программирование важно думать. Крупные проекты разбираются на мелкие, которые уточняются слой за слоем. В этом процессе мы изначально ввели использование функционализации для управления каждой частью этих побочных продуктов. Сегодня я снова изучил библиотеку и использую разные библиотеки для классификации набора соответствующих функций или переменных.
Сделайте Блокнот используя Tkinter
Давайте посмотрим, как создать простой блокнот в Python, используя Tkinter. Этот графический блокнот будет состоять из различных меню, таких как файл и редактирование, с помощью которых можно выполнять все функции, такие как сохранение файла, открытие файла, редактирование, вырезание и вставка.
Теперь для создания этого блокнота, Python 3 и Tkinter уже должны быть установлены в вашей системе. Вы можете скачать подходящий пакет Python в соответствии с системными требованиями. После того, как вы успешно установили Python, вам нужно установить Tkinter (пакет GUI для Python).
Используйте эту команду для установки Tkinter:
from tkinter import *
# Чтобы получить место выше для сообщения
from tkinter.messagebox import *
# Чтобы диалоговое окно открывалось при необходимости
from tkinter.filedialog import *
Примечание. Окно сообщения используется для записи сообщения в белое поле с именем «Блокнот», а файл диалога используется для отображения диалогового окна, когда вы открываете файл из любой точки вашей системы или сохраняете файл в определенной позиции или месте.
# Добавить элементы управления (виджет)
# Открыть новый файл
# Чтобы открыть уже существующий файл
# Сохранить текущий файл
# Создать строку в диалоге
# Чтобы придать черту
# Чтобы дать функцию копирования
# Чтобы добавить функцию вставки
# Чтобы дать возможность редактирования
# Для создания функции описания блокнота
# Полоса прокрутки будет регулироваться автоматически
# в соответствии с содержанием
С помощью этого кода мы добавим меню в окнах нашего блокнота и добавим в него такие вещи, как копирование, вставка, сохранение и т. Д.
def __quitApplication( self ):
def __showAbout( self ):
def __openFile( self ):
# нет файла для открытия
# попробуйте открыть файл
# установить заголовок окна
def __newFile( self ):
def __saveFile( self ):
# сохранить как новый файл
# попытаться сохранить файл
# изменить заголовок окна
В этом мы добавили все функции, которые требуются в блокноте, вы также можете добавить другие функции, такие как размер шрифта, цвет шрифта, полужирный, подчеркнутый и т. Д.
Основной код после объединения всех:
from tkinter import *
from tkinter.messagebox import *
from tkinter.filedialog import *
# ширина и высота окна по умолчанию
__thisFileMenu = Menu(__thisMenuBar, tearoff = 0 )
__thisEditMenu = Menu(__thisMenuBar, tearoff = 0 )
__thisHelpMenu = Menu(__thisMenuBar, tearoff = 0 )
# Добавить полосу прокрутки
# Установить размер окна (по умолчанию 300×300)
# Установить текст окна
# Для верхней и нижней
# Чтобы сделать текстовую область автоматически изменяемой
# Добавить элементы управления (виджет)
# Открыть новый файл
# Чтобы открыть уже существующий файл
# Сохранить текущий файл
# Создать строку в диалоге
# Чтобы придать черту
# дать возможность копирования
# Чтобы добавить функцию вставки
# Чтобы дать возможность редактирования
# Для создания функции описания блокнота
# Полоса прокрутки будет регулироваться автоматически в зависимости от содержимого
def __quitApplication( self ):
def __showAbout( self ):
def __openFile( self ):
# нет файла для открытия
# Попробуй открыть файл
# установить заголовок окна
def __newFile( self ):
def __saveFile( self ):
# Сохранить как новый файл
# Попробуй сохранить файл
# Изменить заголовок окна
# Запустить главное приложение
# Запустить главное приложение
Чтобы запустить этот код, сохраните его с расширением .py, а затем откройте cmd (командную строку) и перейдите в расположение сохраненного файла, а затем напишите следующее
Создаём простой блокнот — wxPython #41
Виджет wx.Notebook позволяет нам создавать пользовательский интерфейс с несколькими вкладками. Большинство примеров, которые вы могли бы найти в сети выглядят достаточно сложно, а новичкам стоило бы начинать с чего-то невероятно простого.
Давайте начнём с примера, который будет легко повторить, а затем немного видоизменим его так, чтобы в будущем было легко добавить какие-либо усовершенствования.
Простой блокнот
Наш простой виджет блокнота состоит из двух вкладок, имеющих псевдослучайный цвет фона. Взгляните:
Этот код достаточно короткий и удобный. Давайте остановимся на минуту и рассмотрим данный пример.
В классе DemoFrame, у нас есть главная панель, которая содержит всего лишь один дочерний виджет Frame. Внутри него у нас расположен контроль блокнота. Каждая страница ноутбука является инстанцией класса TabPanel, и она должна иметь «случайный» цвет фона и одну кнопку без каких-либо конкретных функций.
Есть вопросы по Python?
На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!
Telegram Чат & Канал
Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!
Паблик VK
Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!
Мы добавляем Блокнот в сайзер и устанавливаем пропорцию расширения равную единице. Это значит, что он будет полностью заполнять панель, в независимости от размера самой рамки. Если честно, на этом всё.
Другой интересной темой являет то, что событиям Блокнота, таким как EVT_NOTEBOOK_PAGE_CHANGED, может понадобится вызов “event.Skip()” в их ивент-хендлере, чтобы они продолжали работать как следует.
Иерархия ивентов в wxPython достаточно сложна для освоения, так что я предлагаю представить, что это просто пузыри в пруду. Если вы привязываете виджет к определённому ивенту и не вызываете event.Skip(), значит ваш ивент обрабатывается ИСКЛЮЧИТЕЛЬНО в том определённом хендлере.
Как будто один пузырёк отплыл от других на дне пруда. Однако, иногда вам бывает нужно, чтобы ивент был обработан выше в иерархии, к примеру, в родительском виджете. В таком случае, вызовите Skip() и «пузырёк» вашего события поднимется в следующий хендлер. wxPython wiki и книга Робина Дана « wxPython в действии» помогут вам разобраться в этом лучше.
Эти данные актуальны лишь для простого примера Блокнота. Давайте потратим немного времени на то, чтобы немного его изменить.
Блокнот после рефакторинга
Вы можете быть удивлены тому, что мы собираемся рефакторить достаточно простой код, который крайне легко использовать. Главная причина кроется в том, что нам необходима уверенность в том, что данный код будет совместим с требованиями к проекту, которые могут появится в будущем.
Также нам нужно сохранять возможность легко расширить и видоизменить код, если в него нужно будет добавить новые возможности.
Наиболее простой способ рефакторинга кода – это его модулирование. Чтобы сделать это, нужно превратить крупные виджеты в подклассы. Давайте взглянем:
Создайте простой текстовый редактор с Python
В этом посте я покажу вам очень простой способ создать простой текстовый редактор с Python. Этот… Теги с Python, учебником, начинающим, Youcandoit.
В этом посте я покажу вам очень простой способ создать простой текстовый редактор с Python. Этот учебник предназначен для абсолютных начинающих. Если вы знаете основы Python и немного обработки файлов, вы можете сделать один сами. Прежде чем начать, я бы объяснил немного обработки файлов для тех, кто ничего не знает об этом.
Обработка файлов
Обработка файла в основном работает с файлами с использованием языка программирования. Вы можете открыть файл, прочитать, писать, удалять данные и закройте его снова, делая постоянные изменения. Помимо этого, есть еще много операций, но нам не нужно изучать все эти для этого проекта. Я оставлю ссылку на ссылку в конце этого поста. Вы можете посетить его, чтобы узнать больше.
Открытие и закрытие файла
Чтобы открыть файл, мы используем Открыть () функция. Открыть () Функция принимает два параметра – Путь файла и Режим Отказ
Есть Четыре Режимы для открытия файла:
Кроме того, вы можете указать, следует ли обрабатывать файл в виде двоичного или текстового режима.
Здесь режим «РБ» Рассказывает Питона к «Прочитайте файл в двоичном режиме».
После того, как вы открываете файл и работаете над ним, вам нужно его закрыть. У Питона есть Закрыть () Функция, которая закрывает файл.
Чтение файла
Читать () Функция позволяет нам прочитать содержимое файла. Это требует дополнительного аргумента (целое число), которое указывает, сколько символов для чтения.
Написание файлов
Два режима позволяют нам написать файлы:
Это достаточно для обработки файлов на данный момент. Давайте перейдем к основной части.
Во-первых, создайте новый файл Python. Мы будем использовать путь Модуль из ОС Отказ Итак, давайте импортируем это.
Это поможет нам проверить существующие файлы. Теперь нам нужен пользователь, чтобы ввести путь к новому или существующему файлу. Давайте храним его в переменной file_path Отказ
Далее нам нужно проверить, будет ли файл уже существует использовать существует () Функция дорожка модуль. Для этого нам нужно написать Если утверждение. существует () Функция проверяет, если файл уже существует на данном пути, в этом случае file_path Отказ
Если файл не существует, то он создаст новый файл в том же месте. В противном случае он будет спросить, хотите ли мы продолжить с существующим файлом. Итак, нам нужен другой Если утверждение.
Если мы хотим продолжить с существующим файлом, он спросит, хотите ли мы удалить содержимое или мы хотим добавить текст к нему. В противном случае программа остановится. Итак, давайте напишем другой Если заявление внутри этого.
пройти Ключевое слово сообщает компилятору просто ничего не делать и перейти к следующим шагам. Вместе все детали вместе, ваш код должен выглядеть что-то подобное:
Теперь приходит самая интересная часть, где мы построим интерфейс. Нам нужно сообщить пользователю, как заранее использовать наш текстовый редактор. Итак, вставьте это Печать утверждение.
И теперь вставьте эти линии:
Если вы не знаете, что попробуйте / кроме Заключение используется для коротких слов, он пытается запустить код, если исключение (например, нажатие клавиши, достигая конца файла и т. Д.).
Последнее, но не менее важное, нам нужно закрыть файл. Суммируя его вверх, ваш код будет выглядеть так:
Выход
Вот как работает наш собственный текстовый редактор и выглядит как. Я надеюсь, что сегодня вы узнали что-то новое и понять, как вы можете применить свои навыки программирования, чтобы создать несколько прохладных проектов. Если у вас есть какие-либо вопросы, просто оставьте комментарий, и я буду рад помочь вам.