Stack Overflow em Português Asked by Rodrigo Cesarino on March 18, 2021
Estou com dificuldade em fazer com que o o botão execute uma def e faça uma criptografia simples e, em seguida, exiba na tela.
import tkinter as tk
from tkinter import *
class Application():
def __init__(self, toplevel):
toplevel.title('teste')
self.fr1 = Frame(toplevel)
self.fr1.pack()
self.fr2 = Frame(toplevel)
self.fr2.pack()
self.fr3 = Frame(toplevel)
self.fr3.pack()
self.fr4 = Frame(toplevel,pady=10)
self.fr4.pack()
self.fr5 = Frame(toplevel,pady=10)
self.fr5.pack()
Label(self.fr1,
text='Msg corpo ',
fg='darkblue',font=('Verdana','12','bold'), heigh=5).pack()
Label(self.fr1,
text='msg instrução',
fg='darkblue',font=('Verdana','8','bold'), heigh=5).pack()
fonte1=('Verdana','10','bold')
Label(self.fr2,text='Digite a mensagem: ',font=fonte1,width=20).pack(side=LEFT)
self.nome=Entry(self.fr2,width=50,font=fonte1)
self.nome.focus_force()
self.nome.pack(side=LEFT)
Label(self.fr3,text='Chave: ', font=fonte1, width=20).pack(side=LEFT)
self.cifra=Entry(self.fr3, width=15, font=fonte1)
self.cifra.pack()
self.travar=Button(self.fr4, text='Cripitografar', fg='black', )
self.destravar=Button(self.fr4, text='Descriptografar', fg='black', )
self.travar.pack(side=LEFT)
self.destravar.pack(side=RIGHT)
Label(self.fr5,text=' = ', font=fonte1, width=20).pack(side=LEFT)
self.msg=Label(self.fr5, width=50, font=fonte1)
self.msg.pack()
def travar():
nomes = self.nome.get()
cifras = self.cifra.get()
for i in range(len(nome)):
print(chr(ord(nome[i]) + cifra), end='')
print('')
root = tk.Tk()
app = Application(root)
root.mainloop()
#raiz=Tk()
##Janela(raiz)
#raiz.mainloop()
Rodrigo segue abaixo um pequeno exemplo:
from tkinter import *
root = Tk()
def muda_title(nome=""):
root.title(f'Hello {nome}')
muda_title("Tkinter")
button = Button(master=root, text='Muda o titulo', command=lambda: muda_title("Rodrigo"))
button.pack()
Alterei um pouco o código que vc fez, mas ainda precisa ser melhorado.
import tkinter as tk
from tkinter import *
class Application():
def __init__(self, toplevel):
toplevel.title('teste')
self.fr1 = Frame(toplevel)
self.fr1.pack()
self.fr2 = Frame(toplevel)
self.fr2.pack()
self.fr3 = Frame(toplevel)
self.fr3.pack()
self.fr4 = Frame(toplevel,pady=10)
self.fr4.pack()
self.fr5 = Frame(toplevel,pady=10)
self.fr5.pack()
Label(self.fr1,
text='Msg corpo ',
fg='darkblue',font=('Verdana','12','bold'), heigh=5).pack()
Label(self.fr1,
text='msg instrução',
fg='darkblue',font=('Verdana','8','bold'), heigh=5).pack()
self.fonte1=('Verdana','10','bold')
Label(self.fr2,text='Digite a mensagem: ',font=self.fonte1,width=20).pack(side=LEFT)
self.nome=Entry(self.fr2,width=50,font=self.fonte1)
self.nome.focus_force()
self.nome.pack(side=LEFT)
Label(self.fr3,text='Chave: ', font=self.fonte1, width=20).pack(side=LEFT)
self.cifra=Entry(self.fr3, width=15, font=self.fonte1)
self.cifra.pack()
self.trv = Button(self.fr4, text='Cripitografar', fg='black', command=lambda: self.travar())
self.des = Button(self.fr4, text='Descriptografar', fg='black', command=lambda: self.travar())
self.trv.pack(side=LEFT)
self.des.pack(side=RIGHT)
self.msg = Label(self.fr5,text=f' = ', font=self.fonte1, width=20)
self.msg.pack(side=LEFT)
def travar(self):
self.msg.destroy()
nomes = self.nome.get()
cifras = self.cifra.get()
mensagem = "".join([chr(ord(caracter) + ord(cifras)) for caracter in nomes])
self.msg = Label(self.fr5,text=f' = {mensagem}', font=self.fonte1, width=20)
self.msg.pack(side=LEFT)
root = tk.Tk()
app = Application(root)
root.mainloop()
O que deve ser melhorado
self.trv
e self.des
estão chamando a mesma função. Porém a segunda deveria ser uma para descriptografar, ou destravarchave
seja apenas um caracter, se colocar mais que um em chave
irá gerar uma exceção que deve ser tratada.Todavia
O código responde à pergunta de executar uma função a partir de um botão
Espero que ajude.
Answered by Paulo Marques on March 18, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP