# -*- coding: utf-8 -*-
 
#diretorios de imagens
alldir = ("C:\\Users\juridico.anoreg\Desktop\OFICIOS-ANOREG\imagem\\")
# from  tkinter import *
from tkinter.filedialog import *
import sys
import tkinter
import time
import math
import datetime
import os
import subprocess
import tkinter.messagebox
import calendar as cd
from tkinter import *
import webbrowser
import tkinter.font

class App(object):
    def __init__(self, master):
        

        #ala de menus
        menu = Menu(master)
        root.config(menu=menu)
        # criar menus de arquivo
        filemenu = Menu(menu, tearoff=0)
        menu.add_cascade(label="Arquivo", menu=filemenu)
        filemenu.add_command(label="Novo", command=self.novo)
        filemenu.add_command(label="Abrir", command=self.file_open)
        filemenu.add_command(label="Salvar", command=self.file_save)        
        filemenu.add_separator()
        filemenu.add_command(label="Sair", command=self.do_exit)
        # criar menus de edição
        editmenu = Menu(menu, tearoff=0)
        editmenu.add_command(label="Cortar")
        editmenu.add_command(label="Copiar")
        editmenu.add_command(label="Colar")
        menu.add_cascade(label="Editar", menu=editmenu)
        #criar menus de ajuda
        helpmenu = Menu(menu, tearoff=0)
        helpmenu.add_command(label="Ajuda",command=self.ajuda)
        menu.add_cascade(label="Ajuda", menu=helpmenu)

        #backgound
        self.background_image = PhotoImage(file=alldir+"background.gif")
        self.background = Label(master, image=self.background_image)
        self.background.place(x=0,y=0)


        #frase inicial
        
        self.L0 = Label(master,text =(" Nº do oficio"),bg='navy',foreground="white",font=("Arial", 16,"bold"),justify = LEFT)
        self.L0.place(x=25,y=25)

        self.oficio = Entry(master,width=25)
        self.oficio.place(x=25,y=55)
        self.oficio.focus_set()

        #Data de hoje (dia de mês de ano)
        self.L1=Label (master,text =(" Data de hoje (dia,mes,mes(nº),ano)"),bg='navy',foreground="white",font=("Arial", 16,"bold"),justify = LEFT)
        self.L1.place (x=25,y=80)

        self.data_dia = Entry(master,width=5)
        self.data_dia.place(x=25,y=115)
        self.data_dia.focus_set

        self.data_mes = Entry(master,width=12)
        self.data_mes.place(x=75,y=115)
        self.data_mes.focus_set

        self.data_mes2 = Entry(master,width=5)
        self.data_mes2.place(x=165,y=115)
        self.data_mes2.focus_set


        self.data_ano = Entry(master,width=9)
        self.data_ano.place(x=215,y=115)
        self.data_ano.focus_set

        #Nome da instancia

        self.L2= Label(master, text = ("Remetente "),bg='navy',foreground="white",font=("Arial", 16,"bold"),justify = LEFT)
        self.L2.place (x=25,y=145)
        
        self.Poder = Entry(master,width=45)
        self.Poder.place(x=25,y=185)
        self.Poder.focus_set

        #Numero do processo
        self.L3= Label(master, text = ("Nº do processo "),bg='navy',foreground="white",font=("Arial", 16,"bold"),justify = LEFT)
        self.L3.place (x=25,y=215)
        
        self.Processo = Entry(master,width=45)
        self.Processo.place(x=25,y=255)
        self.Processo.focus_set

        #Data de emissão do documento recebido

        self.L4= Label (master, text = ("Data de emissão do oficio "),bg='navy',foreground="white",font=("Arial", 16,"bold"),justify = LEFT)
        self.L4.place (x=25,y=285)
        
        self.data_diaem = Entry(master,width=5)
        self.data_diaem.place(x=25,y=325)
        self.data_dia.focus_set

        self.data_mesem = Entry(master,width=10)
        self.data_mesem.place(x=75,y=325)
        self.data_mesem.focus_set

        self.data_anoem = Entry(master,width=9)
        self.data_anoem.place(x=155,y=325)
        self.data_anoem.focus_set

        #Informação do processo (Ex: Informando da Interdição de (informar as partes do processo )

        self.L5 = Label (master, text = ("informações referentes ao documento"),bg='navy',foreground="white",font=("Arial", 16,"bold"),justify = LEFT)
        self.L5.place (x=25,y=355)

        self.Informacao = Entry(master,width=75)
        self.Informacao.place(x=25,y=395)
        self.Informacao.focus_set

        #solicitando que seja encaminhada resposta, o mais rápido possível, às devidas indagações. (opcional)
        #qual anoreg ?
        self.L6 = Label (master, text = ("Anoregs"),bg='navy',foreground="white",font=("Arial", 16,"bold"),justify = LEFT)
        self.L6.place (x=25,y=565)

        #barra de rolagem das anoregs estaduais
        scrollbar_Anoreg = Scrollbar(master)
        scrollbar_Anoreg.place(x=150,y=605, height=55)
        
        #listbox das anoregs estaduais
        self.Anoreg = Listbox (master)
        for item in ["ANOREG-AL","ANOREG-AM","ANOREG-AP","ANOREG-BA","ANOREG-CE","ANOREG-DF","ANOREG-ES","ANOREG-GO","ANOREG-MA",
        "ANOREG-MG","ANOREG-MS","ANOREG-MT","ANOREG-PA","ANOREG-PB","ANOREG-PE","ANOREG-PI","ANOREG-PR","ANOREG-RJ",
        "ANOREG-RN","ANOREG-RO","ANOREG-RR","ANOREG-RS","ANOREG-SC","ANOREG-SE","ANOREG-SP","ANOREG-TO"]:
            self.Anoreg.insert(END,item)

        self.Anoreg.place(x=25,y=605,height=55)
        self.Anoreg.focus_set
        #barra de rolagem para anoregs estaduais 
        self.Anoreg.config(yscrollcommand=scrollbar_Anoreg.set)
        scrollbar_Anoreg.config(command=self.Anoreg.yview)
       

        #gerar nome da pasta do dia  para salvar
        Gerar_nome_pasta_dia = Button(master, text="Gerar nome para pasta do dia",bg='navy',foreground="white",font=("Arial", 12,"bold"),justify = LEFT,command=self.Pasta_dia)
        Gerar_nome_pasta_dia.place (x=185,y=475)

        self.L7 = Label (master, text = ("Nome da pasta gerado"),bg='navy',foreground="white",font=("Arial", 12,"bold"),justify = LEFT)
        self.L7.place (x=185,y=425)
    
        self.pasta = Entry(master,width=30)
        self.pasta.place(x=185,y=455)
        self.pasta.focus_set

        #botão pasta do dia
        Criar_pasta_dia = Button(master, text="Criar pasta do dia ",bg='navy',foreground="white",font=("Arial", 12,"bold"),justify = LEFT, width=15, command=(lambda a = 1: askdirectory(initialdir="C:\\Users\juridico.anoreg\Desktop\OFICIOSANOREG\\")))
        Criar_pasta_dia.place(x=185,y=515)

        #botão de criar documento
        DADOS_botão = Button(master,text="CRIAR\nDOCUMENTO",bg='navy',foreground="white",font=("Arial", 12,"bold"),justify = LEFT,command=self.chamando_dados)
        DADOS_botão.place (x=25,y=455)

        #criando um a barra de rolagem de texto
        scrollbartext = Scrollbar(master)
        scrollbartext.place(x=1329,y=355,height=325)

        #caixa de texto
        self.text = Text(master,width = 88, height = 16)
        self.text.place(x=525,y=355)

        #barra de rolagem para caixa de texto
        self.text.config(yscrollcommand=scrollbartext.set,font=("Arial", 12))
        scrollbartext.config(command=self.text.yview)



        #barra de rolagem dos presidentes estaduais
        scrollbar_Presidentes = Scrollbar(master)
        scrollbar_Presidentes.place(x=325,y=605, height=55)
        
        #listbox das anoregs estaduais
        self.Anoreg_presidentes = Listbox (master,width=25)
        for item in ["MANOEL IRAN VILAR MALTA","RONALDO DE BRITO LEITE","JOSÉ ROBERTO SENA DE ALMEIDA","RUFINO GRIFFO RIBEIRO","ALEXANDRE MAGNO MEDEIROS DE ALENCAR","ALAN GUERRA NUNES","HELVÉCIO DUIA CASTELLO","MAURICIO BORGES SAMPAIO","ALICE EMILIANA RIBEIRO BRITO",
        "ROBERTO DIAS DE ANDRADE","PAULO FRANCISCO COIMBRA PEDRA","NIUARA RIBEIRO ROBERTO BORGES","LUIZIEL HENDERSON GUEDES DE OLIVEIRA ","GERMANO CARVALHO TOSCANO DE BRITO","LUIZ GERALDO CORREIA DA SILVA","ANTONIO LISBOA LOPES DE SOUSA FILHO","ROBERT JONCZYK","RENALDO ANDRADE BUSSIERE",
        "FRANCISCO ARAÚJO FERNANDES","PATRICIA DE FÁTIMA ASSIS BARROS","WAGNER MENDES COELHO","LUIZ CARLOS WEINZENMANN","OTAVIO GUILHERME MARGARIDA","ESTELITA NUNES DE OLIVEIRA","PATRÍCIA ANDRÉ DE CAMARGO FERRAZ","MARLY CONCEIÇÃO BONINA NEWTON"]:
            self.Anoreg_presidentes.insert(END,item)

        self.Anoreg_presidentes.place(x=170,y=605,height=55)
        self.Anoreg_presidentes.focus_set
        
        #barra de rolagem para presidentes estaduais 
        self.Anoreg_presidentes.config(yscrollcommand=scrollbar_Presidentes.set)
        scrollbar_Presidentes.config(command=self.Anoreg_presidentes.yview)


        #barra de rolagem dos estados
        scrollbar_Estados = Scrollbar(master)
        scrollbar_Estados.place(x=470,y=605, height=55)
        
        #listbox dos estados
        self.Anoreg_estados = Listbox (master)
        for item in ["Maceió-AL","Manaus-AM","Macapá-AP","Salvador-BA","Fortaleza-CE","Brasília-DF","Vitória-ES","Goiânia-GO","São Luís-MA",
        "Belo Horizonte-MG","Campo Grande-MS","Cuiabá-MT","Belém-PA","João Pessoa-PB","Recife-PE","Teresina-PI","Curitiba-PR","Rio de Janeiro-RJ",
        "Parnamirim-RN","Porto Velho-RO","Boa Vista-RR","Porto Alegre-RS","Florianópolis-SC","Aracaju-SE","São Paulo-SP","Palmas-TO"]:
            self.Anoreg_estados.insert(END,item)

        self.Anoreg_estados.place(x=345,y=605,height=55)
        self.Anoreg_estados.focus_set
        
        #barra de rolagem dos estados
        self.Anoreg_estados.config(yscrollcommand=scrollbar_Estados.set)
        scrollbar_Estados.config(command=self.Anoreg_estados.yview)
           
        
        #Logotipo da ANOREG-BR
        self.anoreg_image = PhotoImage(file=alldir+"logo.gif")
        self.anoreg_logo=Label(master,image=self.anoreg_image)
        self.anoreg_logo.place(x=1270,y=2)

        #Novas Opções
        self.telefone_image = PhotoImage(file=alldir+"telefone.gif")
        TELEFONES_ANOREG = Button(master,image=self.telefone_image, width=70)
        TELEFONES_ANOREG.place(x=25,y=720)

        self.recados_image = PhotoImage(file=alldir+"post-it.gif")
        RECADOS_ANOREG = Button(master, image=self.recados_image,width=70,command=self.openExe)
        RECADOS_ANOREG.place(x=125,y=720)

        self.sites_image = PhotoImage(file=alldir+"site.gif")
        SITES_ANOREG = Button(master,image=self.sites_image,command=self.site_anoreg)
        SITES_ANOREG.place(x=410,y=720)

        self.calendario_image = PhotoImage(file=alldir+"calendar.gif")
        Calendário_ANOREG = Button(master, image=self.calendario_image,command=self.calendario)
        Calendário_ANOREG.place(x=220,y=720)
        
        ##transporte de informações
    #pegando o valor Oficio
    def chamando_dados(self):
            self.text.insert(END, "                      Brasilia   ")
            self.text.insert(END, self.data_dia.get())
            self.text.insert(END, " de ")
            self.text.insert(END, self.data_mes.get())
            self.text.insert(END, " de ")
            self.text.insert(END, self.data_ano.get())
            self.text.insert(END,"\n")
            self.text.insert(END,"\n")
            self.text.insert(END,"\n")
            self.text.insert(END,"\n")
            self.text.insert(END,"Oficio nº  ")
            self.text.insert(END, self.data_dia.get())
            self.text.insert(END,self.data_mes2.get())
            self.text.insert(END,"/")
            self.text.insert(END, self.data_ano.get())
            self.text.insert(END,"\n")
            self.text.insert(END,"\n") 
            self.text.insert(END, "Prezado Senhor, \n")
            self.text.insert(END,"\n")
            self.text.insert(END, "Informamos que a ANOREG/BR recebeu, na data de ")
            self.text.insert(END, self.data_dia.get())
            self.text.insert(END, " de ")
            self.text.insert(END, self.data_mes.get())
            self.text.insert(END, " de ")
            self.text.insert(END, self.data_ano.get())
            self.text.insert(END, ", ")
            self.text.insert(END, self.Poder.get())
            self.text.insert(END, ", ")
            self.text.insert(END, "o oficio Nº ")
            self.text.insert(END, self.oficio.get())
                
            self.text.insert(END, "processo Nº  ")
            self.text.insert(END, self.Processo.get())
            self.text.insert(END,",datado de ")
            self.text.insert(END, self.data_diaem.get())
            self.text.insert(END, " de ")
            self.text.insert(END, self.data_mesem.get())
            self.text.insert(END, " de ")
            self.text.insert(END, self.data_anoem.get())
            self.text.insert(END, ",")
            self.text.insert(END, self.Informacao.get())
            self.text.insert(END," solicitando que seja encaminhada resposta, o mais rápido possível, às devidas indagações.")
            self.text.insert(END,"\n")
            self.text.insert(END,"\n")
            self.text.insert(END,"Dessa forma, pedimos que a ")
            self.text.insert(END, self.Anoreg.get(ACTIVE))
            self.text.insert(END, " providencie o envio dos questionamentos aos cartórios extrajudiciais competentes.")
            self.text.insert(END,"\n")
            self.text.insert(END,"\n")
            self.text.insert(END,"Frisa-se que cada serventia deverá responder diretamente ao órgão citado acima. ")
            self.text.insert(END,"\n")
            self.text.insert(END,"\n")
            self.text.insert(END,"Atenciosamente,")
            self.text.insert(END,"\n")
            self.text.insert(END,"\n")
            self.text.insert(END,"                          CHRISTIAN THOMAS ONCKEN")
            self.text.insert(END,"\n")
            self.text.insert(END,"                           Estagiário de Direito")
            self.text.insert(END,"\n")
            self.text.insert(END,"Ao Senhor,")
            self.text.insert(END,"\n")
            self.text.insert(END,"Dr.")
            self.text.insert(END, self.Anoreg_presidentes.get(ACTIVE))
            self.text.insert(END,"\n")
            self.text.insert(END,"Presidente da ")
            self.text.insert(END,"\n")
            self.text.insert(END, self.Anoreg.get(ACTIVE))

            self.text.tag_add("oficio","3.5","7.0")
            self.text.tag_config("oficio",font=("Arial", 12,"bold"))

            self.text.tag_add("anoregbr","9.17","9.26")
            self.text.tag_config("anoregbr",font=("Arial", 12,"bold"))

            self.text.tag_add("anoreges","11.26","11.37")
            self.text.tag_config("anoreges",font=("Arial", 12,"bold"))
            
            
            self.text.tag_add("estagiario","17.5","18.0")
            self.text.tag_config("estagiario",font=("Arial", 12,"bold"))

            self.text.tag_add("presidente","20.3","21.0")
            self.text.tag_config("presidente",font=("Arial", 12,"bold"))

            self.text.tag_add("estado","22.0","23.5")
            self.text.tag_config("estado",underline=1)

            

            
            
            
            
    def file_open(self):
        """open a file to read"""
        # optional initial directory (default is current directory)
        initial_dir ="C:\\Users\juridico.anoreg\Desktop\OFICIOSANOREG\\"
        # the filetype mask (default is all files)
        mask = \
        [("Text and Python files","*.txt *.py *.pyw"), 
        ("HTML files","*.htm"), 
        ("All files","*.*")]        
        fin = askopenfile(initialdir=initial_dir, filetypes=mask, mode='r')
        text = fin.read()
        if text != None:
            self.text.delete(0.0, END)
            self.text.insert(END,text)
    
 
    def file_save(self):
        """get a filename and save the text in the editor widget"""
        
        # default extension is optional, here will add .txt if missing
        # nome automatico
        fout = asksaveasfile(mode='w',initialdir="C:\\Users\juridico.anoreg\Desktop\OFICIOSANOREG\\",initialfile = (self.Poder.get(),self.oficio.get()) , defaultextension=".txt")
        text2save = str(self.text.get(0.0,END))
        [B]tag2save = (self.text.tag_cget())[/B]
        fout.write(text2save,tag2save)
        fout.close()
 
    def do_exit(self):
        root.destroy()
        
    def novo (self):
         self.text.delete(1.0, END)
         self.oficio.delete (0,END)
         self.data.delete (0,END)
         self.Poder.delete (0,END)
         self.Processo.delete (0,END)
         self.Emissao_processo.delete (0,END)
         self.Informacao.delete (0,END)
         self.Anoreg.delete (0,END)
         self.pasta.delete (0,END)

    def Pasta_dia(self):
        self.pasta.insert(END,("Oficio n.",self.data_dia.get(), self.data_mes2.get()))
    
    
    def calendario(self):
        calendario = Tk()
        frame = Frame(calendario)
        frame.grid()
        #background
        self.background2 = Label(calendario, bg='navy',width=200)
        self.background2.place(x=0,y=0,height=200)
        Calendário = Button(calendario, text="CALENDÁRIO\n",justify = LEFT, width=15,command=self.abrircalendario)
        Calendário.place(x=0, y=0)
        #selecione o ano
        self.ano = Entry (calendario)
        self.ano.place(x=0,y=55)
        self.ano.focus_set
        #selecione o mês
        self.mes = Entry (calendario)
        self.mes.place(x=0,y=75)
        self.mes.focus_set
        

        
        calendario.geometry("250x150+300+300")
        calendario.mainloop()
         

    def abrircalendario (self):
        
        # supply year and month
        year = int(self.ano.get())
        month = int(self.mes.get())   # jan=1
        

        # assign the month's calendar to a multiline string
        str1 = cd.month(year, month)

        # create the window form and call it root (typical)
        calendarioopen = Tk()
        calendarioopen.title("Monthly Calendar")
        #background
        self.background2 = Label(calendarioopen, bg='navy',width=200)
        self.background2.place(x=0,y=0,height=300)
        # pick a fixed font like courier so spaces behave right 
        self.label1 = Label(calendarioopen, text=str1, font=('courier', 14, 'bold'), bg='white')
        self.label1.place(x=3, y=5)
        calendarioopen.geometry("350x250+300+300")
        calendarioopen.mainloop()
    def ajuda (self):
        
        top = Toplevel()

        igm = PhotoImage(file=alldir+"logo.gif")
        Label(top,image=igm).grid()
        top.mainloop()

        
        
    def site_anoreg(self):
        site = Tk()
        
        #backgound
        
        self.background1 = Label(site, bg='navy',width=200)
        self.background1.place(x=0,y=0,height=200)
       
        
        self.site_anoreg = Listbox(site, foreground= "blue",width=45)
        
        for item in ["http://www.google.com.br","http://www.anoreg.org.br/index.php","http://www.stf.jus.br/portal/principal/principal.asp","http://www.cnj.jus.br/"]:
            self.site_anoreg.insert(END,item)
        self.site_anoreg.place(x=0,y=0)

        botao_site=Button(site,text="abrir",command=self.abrir_site)
        botao_site.place(x=280,y=35)
        site.geometry("350x150+300+300")
        site.mainloop()
        
    def abrir_site(self):
        webbrowser.open(self.site_anoreg.get(ACTIVE))

    
       
        
    def openExe(self):
        os.startfile( "C:\\Windows\system32\StikyNot.exe\\" )        
        
       




root = Tk()
root.title("OFICIOS ANOREG-BR 2011- v.1.0")
root.state("zoomed")
app = App(root)
root.mainloop()

i need a help to save the text with tag´s (bold, underline, font ) (red foreground in code)

Edited 5 Years Ago by ~s.o.s~: Fixed code tags.

Is there any way to save this formatting
when saving the text from the widget to a file?
widget has the Save method - but it strips all tags out and just
saves the plain text.

This article has been dead for over six months. Start a new discussion instead.