Урок #6 – Создание простого текстового редактора

За урок мы детально вникнем в написание кода на основе библиотеки PyQt 5. Мы с нуля построим полноценную программу, что будет являться текстовым редактор с возможностью открытия, редактирования и сохранения файла.
Видеоурок
За урок мы разработали программу «Текстовый редактор». Программа обладает минимальным дизайном и набором из нескольких функций. Программу можно дорабатывать или же на её основе разработать свою собственную.
Принцип построения программ сводится к двум вещам: создание дизайна в Qt Designer и разработка функционала через PyQt. Если программа является слишком простой, то весь процесс можно прописать самостоятельно без Qt Designer.
Программа обучения
Также хотим отметить, что если вас интересует углубленное изучение языка Питон и его фреймворков, то предлагаем вашему внимаю наш полный курс по изучению языка питон и сопутствующих технологий.
В ходе огромной программы обучения вы изучите более сложные концепции языка Питон, научитесь на его основе строить полноценные программы под Андроид, изучите процесс построения веб сайтов и, конечно же, немного дополнительно изучите работу с искусственным интеллектом. За курс вы научитесь создавать сайты разных жанров, делать приложения, создавать крутые консольные проекты и к концу обучения у вас будет достаточный багаж знаний чтобы начать создавать свои собственные проекты разных жанров.
Весь код будет доступен после подписки на проект!
Большое задание по курсу
Вам необходимо оформить подписку на сайте, чтобы иметь доступ ко всем большим заданиям. В задание входит методика решения, а также готовый проект с ответом к заданию.
PS: подобные задания доступны при подписке от 1 месяца
Урок #6 – Создание простого текстового редактора

За урок мы детально вникнем в написание кода на основе библиотеки PyQt 5. Мы с нуля построим полноценную программу, что будет являться текстовым редактор с возможностью открытия, редактирования и сохранения файла.
Відеоурок
Підписуйтесь на нашу групу в Телеграм
За урок мы разработали программу «Текстовый редактор». Программа обладает минимальным дизайном и набором из нескольких функций. Программу можно дорабатывать или же на её основе разработать свою собственную.
Принцип построения программ сводится к двум вещам: создание дизайна в Qt Designer и разработка функционала через PyQt. Если программа является слишком простой, то весь процесс можно прописать самостоятельно без Qt Designer.
Программа обучения
Также хотим отметить, что если вас интересует углубленное изучение языка Питон и его фреймворков, то предлагаем вашему внимаю наш полный курс по изучению языка питон и сопутствующих технологий.
В ходе огромной программы обучения вы изучите более сложные концепции языка Питон, научитесь на его основе строить полноценные программы под Андроид, изучите процесс построения веб сайтов и, конечно же, немного дополнительно изучите работу с искусственным интеллектом. За курс вы научитесь создавать сайты разных жанров, делать приложения, создавать крутые консольные проекты и к концу обучения у вас будет достаточный багаж знаний чтобы начать создавать свои собственные проекты разных жанров.
Весь код буде доступний після підписки на проект!
Велике завдання за курсом
Вам необхідно оформити передплату на сайті, щоб мати доступ до всіх великих завдань. У завдання входить методика рішення, а також готовий проект з відповіддю до завдання.
PS: подібні завдання доступні при підписці від 1 місяця
Как сделать терминальный текстовый редактор
хочу сделать текстовый редактор для linux (можно и для windows, пока не определился, но терминальный точно) на языке C. Был опыт создания текстового редактора на Python, но такой редактор я открывал как приложение. В случае с C хочу сделать терминальный текстовый редактор как nano. Как можно реализовать такую вещь: пользователь открыл терминал -> ввел, например, как в текстовом редакторе micro команду ./micro и открылось в этом же терминале окно с текстовым редактором. Название библиотеки, может, статью какую-нибудь, буду благодарен.

Отслеживать
задан 20 июл 2021 в 16:09
438 2 2 серебряных знака 11 11 бронзовых знаков
можешь начать гуглить со слова ncurses .
20 июл 2021 в 17:22
хочу сделать терминальный текстовый редактор как nano → gnu/nano → git
20 июл 2021 в 19:07
я думаю, это самый простой вариант для старта github.com/antirez/kilo
20 июл 2021 в 19:25
@aleksandrbarakin я имел ввиду сам формат — через терминал, а не сам nano
20 июл 2021 в 19:49
@KoVadim спасибо
20 июл 2021 в 19:49
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Я делал консольный текстовый редактор под Linux используя ncurses. А под Windows — pdcurses. Они отличаются некоторыми моментами, но по сути это одно и тоже. Научитесь использовать ncurses и с pdcurses проблем не будет, но все же почитайте в интернете об их различиях, иначе вас может ждать неприятный сюрприз.
Как можно реализовать такую вещь: пользователь открыл терминал -> ввел, например, как в текстовом редакторе micro команду ./micro и открылось в этом же терминале окно с текстовым редактором. Название библиотеки, может, статью какую-нибудь, буду благодарен.
Если я правильно понял что вам нужно, то в том же линуксе вы можете запустить свой текстовый редактор из любого терминала используя эту инструкцию. А что бы создать новое окно в уже открытом текстовом редакторе в том же терминале, тут вам в помощь ncurses. Я не пользовался micro, потому не знаю что конкретно вы хотите сделать (может что-то специфичное). В худшем случае используя тот же ncurses вам придется достаточно много пописать ручками что бы разделить экран сохраняя при этом все требования что предъявляет ваша программа.
Простой красивый текстовый редактор на python с файловым меню
Продолжаю скрещивать бульдога с носорогом (tkinter и customtkinter). Сейчас решил немного сделать красивее текстовый редактор, путем добавления в код лого-лейбла в виде уже ранее знакомой палитры из калькулятора.
Продолжаю скрещивать бульдога с носорогом (tkinter и customtkinter). Сейчас решил немного сделать красивее текстовый редактор, путем добавления в код лого-лейбла в виде уже ранее знакомой палитры из калькулятора.
В текстовом редакторе можно открывать текстовые файлы, редактировать и сохранять. Кроме того, имеется возможность менять цвет шрифта. Правда, цветовой параметр не сохраняется в файл.
from tkinter import * from tkinter.filedialog import * from customtkinter import * from PIL import Image import customtkinter as CTk from tkinter.colorchooser import askcolor class App(CTk.CTk): def __init__(self): super().__init__() self.geometry(«500×500») self.title(«Textovic») self.resizable(True, True) self.logo = CTk.CTkImage(dark_image=Image.open(«1.jpg»), size=(500, 500)) self.logo_label = CTk.CTkLabel(master=self, text=»», image=self.logo) self.logo_label.grid(row=0, column=0) self.mainmenu = Menu(self) self.config(menu=self.mainmenu) self.fm = Menu(self.mainmenu, tearoff=0) self.mainmenu.add_cascade(label=»Файл», menu=self.fm) self.fm.add_command(label=»Открыть. «, command=self._open) self.fm.add_command(label=»Сохранить как. «, command=self._save) self.pt = Menu(self.mainmenu, tearoff=0) self.mainmenu.add_cascade(label=»Параметры текста», menu=self.pt) self.pt.add_command(label=»Цвет текста», command=self.getColor) self.txt = CTkTextbox(master=self) self.txt.grid(column=0, columnspan=5, row=0, padx=(10, 10), pady=(20, 20), sticky=»nsew») # открытие файла def _open(self): op = askopenfilename(title=»Выбор файла», initialdir=»D://», initialfile=»», defaultextension=»txt, xml, html») print(op) f = open(op, «r», encoding=’utf-8′) content = f.read() self.txt.delete(1.0, END) self.txt.insert(END, content) # сохранение файла def _save(self): sa = asksaveasfilename(title=»Выбор файла», initialdir=»D://», defaultextension=»txt, xml, html», initialfile=»») content = self.txt.get(1.0, END) f = open(sa, «w», encoding=’utf-8′, ) f.write(content) f.close() # изменение цвета def getColor(self): count = 0 color = askcolor() if self.txt.tag_ranges(‘sel’): self.txt.tag_add(‘colortag_’ + str(count), SEL_FIRST, SEL_LAST) self.txt.tag_config(‘colortag_’ + str(count), foreground=color[1]) count += 1 else: # Do this if you want to overwrite all selection colors when you change color without selection # for tag in text.tag_names(): # text.tag_delete(tag) self.txt.config(foreground=color[1]) count = 0 if __name__ == «__main__»: app = App() app.mainloop()