Advertisement
Guest User

Untitled

a guest
Jul 31st, 2015
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.76 KB | None | 0 0
  1. # -*- coding: cp1252 -*-
  2.  
  3. #--------------------------------------------------------------------------@
  4. # Programa codificador e decodificador de codigo morse 'CDCM'
  5. # Autor: Jhonathan Paulo Banczek
  6. # data: 14 a 15/01/2011
  7. # email: jpbanczek@gmail.com
  8. #---------------------------------------------------------------------------@
  9.  
  10. #importar o modulo Tkinter
  11. from tkinter import *
  12.  
  13. #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  14. # Classe Janela
  15. #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  16.  
  17. class Janela:
  18. #metodos
  19. def __init__(self, janela): #init é o construtor da classe
  20.  
  21. #-----------------------------
  22. # cria o conteiner.
  23. #-----------------------------
  24. janela.title("Codificador de Código MORSE") #nome da janela
  25. janela.minsize( width = 540, height= 450) #tamanho minino da janela
  26. janela.maxsize( width = 540, height= 450) #tamanho minino da janela
  27. self.frame1 = Frame(janela)
  28. self.frame1.grid()
  29.  
  30.  
  31. #-------------------------------------------------
  32. # cria a barra de Menu
  33. #-------------------------------------------------
  34. self.menu = Menu( janela ) #cria um menu com pai janela
  35.  
  36. self.arquivo = Menu( self.menu, tearoff=0 ) #cria o sub menu arquivo
  37.  
  38. self.menu.add_cascade( label = "Arquivo", menu = self.arquivo) #cria um menu de cascata Arquivo
  39.  
  40. #adiciona as opçoes do menu arquivo
  41. self.arquivo.add_command( label = "Novo", command = self.limpa_campo ) #comando limpa o campo
  42. self.arquivo.add_command( label = "Salvar" ) #comando pra salvar como texto
  43. self.arquivo.add_separator() #coloca uma linha
  44. self.arquivo.add_command( label = "Fechar", command = janela.destroy ) #comando que finaliza o programa
  45.  
  46. #cria um menu Editar
  47. self.editar = Menu( self.menu, tearoff=0 )
  48.  
  49. self.menu.add_cascade( label = "Editar", menu = self.editar) #cria um sub menu para editar
  50. self.editar.add_command( label = "Limpar", command = self.limpa_campo ) #limpa o campo
  51. self.editar.add_command( label = "Codificar texto", command = self.converte ) #converte o texto pra Morse
  52. self.editar.add_command( label = "Decodificar Código Morse" ) #falta implementar.
  53.  
  54. #cria um menu Ajuda
  55. self.ajuda = Menu( self.menu, tearoff=0 )
  56.  
  57. self.menu.add_cascade( label = "Ajuda", menu = self.ajuda)
  58. self.ajuda.add_command( label = "Ajuda" )
  59. self.ajuda.add_command( label = "Sobre", command = self.sobre )
  60.  
  61.  
  62. janela.config(menu = self.menu) #mostra os menus
  63.  
  64.  
  65.  
  66.  
  67. #-----------------------------
  68. # Cria o titulo
  69. #-----------------------------
  70. self.titulo = Label( self.frame1 )
  71. self.titulo['text'] = "CODIFICADOR"
  72. self.titulo['font'] = 'ARIAL','20'
  73. self.titulo['bg'] = 'white'
  74.  
  75.  
  76. #-----------------------------
  77. # cria a msg1
  78. #-----------------------------
  79. self.msg1 = Label( self.frame1 )
  80. self.msg1['text'] = "Informe no campo abaixo a frase:\n"
  81. self.msg1['font'] = 'ARIAL','14'
  82.  
  83.  
  84. #-----------------------------
  85. # cria o campo de entrada
  86. #-----------------------------
  87.  
  88. self.barra = Scrollbar( self.frame1, orient = VERTICAL ) #cria uma barra de rolagem vertical pro campo entrada
  89.  
  90. self.entrada = Text( self.frame1, yscrollcommand = self.barra.set )
  91.  
  92. self.barra['command'] = self.entrada.yview #yview visualiza o texto
  93.  
  94. self.entrada['height'] = 6
  95. self.entrada['width'] = 60
  96.  
  97.  
  98. #------------------------------------
  99. # cria o botao de enviar/codificar
  100. #-----------------------------------
  101. self.botao_codificar = Button( self.frame1 )
  102. self.botao_codificar['command'] = self.converte
  103. self.botao_codificar['bd'] = 3
  104. self.botao_codificar['text'] = "Codificar"
  105. self.botao_codificar['font'] = 'ARIAL','13'
  106.  
  107.  
  108. #-----------------------------------
  109. # cria o botao de limpar o campo
  110. #-----------------------------------
  111. self.botao_limpar = Button( self.frame1 )
  112. self.botao_limpar['command'] = self.limpa_campo
  113. self.botao_codificar['bd'] = 3
  114. self.botao_limpar['text'] = "Limpar"
  115. self.botao_limpar['font'] = 'ARIAL','13'
  116.  
  117.  
  118. #-----------------------------------
  119. # cria o botao de limpar o campo
  120. #-----------------------------------
  121. self.msg2 = Label( self.frame1 )
  122. self.msg2['text'] = "\nTexto codificado:\n"
  123. self.msg2['font'] = 'ARIAL','14'
  124.  
  125.  
  126. #-----------------------------------
  127. # cria o campo de saida
  128. #-----------------------------------
  129. self.barra2 = Scrollbar( self.frame1, orient = VERTICAL ) #cria uma barra de rolagem vertical pro campo entrada
  130.  
  131. self.saida = Text( self.frame1, yscrollcommand = self.barra2.set )
  132.  
  133. self.barra2['command'] = self.saida.yview
  134.  
  135. self.saida['height'] = 6
  136. self.saida['width'] = 60
  137.  
  138.  
  139. #-----------------------------------
  140. # exibindo os widGets
  141. #-----------------------------------
  142. self.titulo.grid( row = 0, column = 2)
  143. self.msg1.grid( row = 2, column = 2 )
  144.  
  145. self.entrada.grid( row = 3, column = 2, padx = 8 )
  146. self.barra.grid( row = 3, column = 3 )
  147.  
  148. self.botao_codificar.grid( row = 4, column = 2 )
  149.  
  150. self.msg2.grid( row = 5, column = 2 )
  151. self.saida.grid( row = 6, column = 2, padx = 8 )
  152. self.barra2.grid( row = 6, column = 3)
  153. self.botao_limpar.grid( row = 7, column = 2 )
  154.  
  155.  
  156. #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  157. # Metodos da classe Janela
  158. #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  159.  
  160. #-----------------------------------------------
  161. # converte o texto do campo entrada
  162. # para CODIGO MORSE e insere no campo saida
  163. #-----------------------------------------------
  164.  
  165. def converte( self ):
  166.  
  167. texto = self.entrada.get(0.0, END)
  168. texto = texto.lower()#converte pra minusculo
  169. #texto = str(texto)
  170.  
  171. aux = ""
  172. #procura a ocorrencia do carater.
  173. for i in texto:
  174. if i == 'a':aux = aux +'.- '
  175. elif i == 'b':aux = aux +'-... '
  176. elif i == 'c':aux = aux +'-.-. '
  177. elif i == 'd':aux = aux +'-.. '
  178. elif i == 'e':aux = aux +'. '
  179. elif i == 'f':aux = aux +'..-. '
  180. elif i == 'g':aux = aux +'--. '
  181. elif i == 'h':aux = aux +'.... '
  182. elif i == 'i':aux = aux +'.. '
  183. elif i == 'j':aux = aux +'.--- '
  184. elif i == 'k':aux = aux +'-.- '
  185. elif i == 'l':aux = aux +'.-.. '
  186. elif i == 'm':aux = aux +'-- '
  187. elif i == 'n': aux = aux +'-. '
  188. elif i == 'o':aux = aux +'--- '
  189. elif i == 'p':aux = aux +'.--. '
  190. elif i == 'q':aux = aux +'--.- '
  191. elif i == 'r':aux = aux +'.-. '
  192. elif i == 's':aux = aux +'... '
  193. elif i == 't':aux = aux +'- '
  194. elif i == 'u':aux = aux +'..- '
  195. elif i == 'v':aux = aux +'...- '
  196. elif i == 'x':aux = aux +'-..- '
  197. elif i == 'w':aux = aux +'.-- '
  198. elif i == 'y':aux = aux +'-.-- '
  199. elif i == 'z':aux = aux +'--.. '
  200.  
  201. #NUMEROS
  202. elif i == '1':aux = aux +'.---- '
  203. elif i == '2':aux = aux +'..--- '
  204. elif i == '3':aux = aux +'...-- '
  205. elif i == '4':aux = aux +'....- '
  206. elif i == '5':aux = aux +'..... '
  207. elif i == '6':aux = aux +'-.... '
  208. elif i == '7':aux = aux +'--... '
  209. elif i == '8':aux = aux +'---.. '
  210. elif i == '9':aux = aux +'----. '
  211. elif i == '0':aux = aux +'----- '
  212. elif i == ' ':aux = aux +' / '
  213. elif i == '\n':aux = aux + '\n'
  214.  
  215. #caracteres especiais
  216. elif i == '?':aux = aux +'··--·· '
  217. elif i == '!':aux = aux +'-·-·-- '
  218. elif i == ',':aux = aux +'--··-- '
  219. elif i == '.':aux = aux +'·-·-·- '
  220. elif i == '+':aux = aux +'·-·-· '
  221. elif i == '-':aux = aux +'-····- '
  222. elif i == "'": aux = aux + '·-··-· '
  223. elif i == '(': aux = aux + '-·--· '
  224. elif i == ')': aux = aux + '-·--·- '
  225. elif i == '&': aux = aux + '·-··· '
  226. elif i == ':': aux = aux + '----··· '
  227. elif i == ':': aux = aux + '-·-·-· '
  228. elif i == '=': aux = aux + '-···- '
  229. elif i == '-': aux = aux + '-····- '
  230. elif i == '_': aux = aux + '··--·- '
  231. elif i == '$': aux = aux + '···-··- '
  232.  
  233. else:
  234. pass
  235.  
  236. self.saida.insert(END, aux) #insere o codigo codificado no campo de saida
  237.  
  238. #FIM do metodo converte_morse
  239.  
  240.  
  241. #--------------------------------------------------
  242. # Método que limpa os campo de entrada e saida
  243. #--------------------------------------------------
  244. def limpa_campo( self ):
  245. self.entrada.delete(0.0, END)
  246. self.saida.delete(0.0, END)
  247.  
  248. #FIM do metodo limpa_campo
  249.  
  250. def salvar( self ):
  251. print( "lol")
  252.  
  253. #fim do metodo salvar
  254.  
  255. #--------------------------------------------------
  256. # Método que exibe uma janela sobreo programa
  257. #--------------------------------------------------
  258. def sobre( self ):
  259.  
  260. janela_sobre = Toplevel()
  261. janela_sobre.minsize( width = 600, height= 350) #tamanho minino da janela
  262. janela_sobre.maxsize( width = 600, height= 350) #tamanho minino da janela
  263.  
  264. janela_sobre.title( "Sobre o Programa" )
  265.  
  266. #cri um texto com a informação
  267. msg1 = Label(janela_sobre)
  268. msg1['text'] = """CDCM\nPrograma: Codificador e Decodificador CÓDIGO MORSE.\nAUTOR: Jhonathan Paulo Banczek\nDATA: 14 - 15/01/2011
  269. \n\nUnigran - Ciência da Computação.\nEMAIL: jpbanczek@gmail.com\n\nProgramação PYTHON - TK """
  270.  
  271. msg1['font'] = 'times','18' #fonte
  272. msg1['fg'] = 'red' #cor
  273.  
  274. msg1.pack(side = TOP) #exibe
  275. Button(janela_sobre, text = "Fechar", width = 10, command = janela_sobre.destroy).pack() #cria o botao pra fechar o frame
  276.  
  277. #fim do metodo sobre
  278.  
  279.  
  280. #-------------------------------------------fim da classe-----------------
  281.  
  282.  
  283.  
  284. #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  285. # FUNÇÃO PRINCIPAL
  286. #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  287.  
  288.  
  289. raiz = Tk()# cria uma variavel do tipo classe Tk
  290.  
  291. Janela(raiz)# passa a variavel pra clase janela
  292.  
  293. raiz.mainloop()# loop infinito que mantem a janela aberta pros eventos
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement