
Editor de Texto Simples
1. Introdução
Crie um Arquivo Python chamado editor.py:
nano editor.py
import tkinter as tk
from tkinter import filedialog, messagebox
def novo_arquivo():
text_area.delete(1.0, tk.END)
def abrir_arquivo():
caminho_arquivo = filedialog.askopenfilename(defaultextension=".txt",
filetypes=[("Arquivos de Texto", "*.txt"),
("Todos os Arquivos", "*.*")])
if caminho_arquivo:
try:
with open(caminho_arquivo, "r") as arquivo:
text_area.delete(1.0, tk.END)
text_area.insert(tk.END, arquivo.read())
except Exception as e:
messagebox.showerror("Erro", f"Não foi possível abrir o arquivo: {e}")
def salvar_arquivo():
caminho_arquivo = filedialog.asksaveasfilename(defaultextension=".txt",
filetypes=[("Arquivos de Texto", "*.txt"),
("Todos os Arquivos", "*.*")])
if caminho_arquivo:
try:
with open(caminho_arquivo, "w") as arquivo:
arquivo.write(text_area.get(1.0, tk.END))
except Exception as e:
messagebox.showerror("Erro", f"Não foi possível salvar o arquivo: {e}")
# Configurar a janela principal
janela = tk.Tk()
janela.title("Editor de Texto")
janela.geometry("600x400")
# Menu
menu_barra = tk.Menu(janela)
arquivo_menu = tk.Menu(menu_barra, tearoff=0)
arquivo_menu.add_command(label="Novo", command=novo_arquivo)
arquivo_menu.add_command(label="Abrir", command=abrir_arquivo)
arquivo_menu.add_command(label="Salvar", command=salvar_arquivo)
arquivo_menu.add_separator()
arquivo_menu.add_command(label="Sair", command=janela.quit)
menu_barra.add_cascade(label="Arquivo", menu=arquivo_menu)
janela.config(menu=menu_barra)
# Área de texto
text_area = tk.Text(janela, undo=True, wrap='word')
text_area.pack(expand=True, fill='both')
# Rodar a aplicação
janela.mainloop()
Salve e Execute
python3 editor.py
Funcionalidades
- Novo: Limpa a área de texto para começar um novo documento.
- Abrir: Abre um arquivo de texto existente.
- Salvar: Salva o conteúdo atual em um arquivo.
- Interface Simples: Área de texto expansível e menu básico.
2. Sugestões de Funcionalidades Adicionais
Desfazer/Refazer:
- Implemente comandos para desfazer e refazer alterações no texto.
Barra de Status:
- Adicione uma barra de status para exibir a linha e a coluna atuais do cursor.
Suporte a Temas:
- Implemente a capacidade de alternar entre temas claros e escuros.
Busca e Substituição:
- Adicione uma funcionalidade para buscar texto e substituí-lo.
Suporte a Diferentes Fontes e Tamanhos:
- Permita que o usuário altere o tipo de fonte e o tamanho do texto.
Melhorias de Interface
Ícones e Atalhos:
- Use ícones em vez de texto para os itens do menu e adicione atalhos de teclado para facilitar o acesso.
Melhoria do Layout:
- Aplique um layout mais organizado, utilizando Frame para separação de áreas.
Recursos Avançados
Edição Avançada:
- Recursos como realce de sintaxe para programação e suporte a plugins.
Autossalvamento:
- Integre uma funcionalidade de autossalvamento para evitar a perda de dados.
Multiplos Documentos:
- Suporte a abas para editar múltiplos documentos simultaneamente.
Integração com Sistema de Arquivos:
- Recursos para abrir e salvar em nuvem, como Google Drive ou Dropbox
Exemplo de Implementação:
Desfazer/Refazer
Você pode usar o recurso undo/redo do widget Text do Tkinter:
# Dentro da configuração da área de texto
text_area = tk.Text(janela, undo=True, wrap='word')
# Adicionar comandos ao menu
editar_menu = tk.Menu(menu_barra, tearoff=0)
editar_menu.add_command(label="Desfazer", command=text_area.edit_undo)
editar_menu.add_command(label="Refazer", command=text_area.edit_redo)
menu_barra.add_cascade(label="Editar", menu=editar_menu)