Ir ao conteúdo
  • Cadastre-se
Amanda Kellen

Python Não consigo pegar o valor digitado no widget Entry

Posts recomendados

Estou desenvolvendo uma aplicação em python e desejo salvar o nome digitado dentro de uma variável e exibi-lo,porém não consigo fazer isso.

import tkinter as tk
from tkcalendar import Calendar, DateEntry
from tkinter import *
from tkinter import messagebox
from tkinter import Label,Entry
from tkinter.ttk import *
from datetime import date, datetime
Data=datetime.today()

class termos:
    global Data
    def __init__(self):
        global Data
        #Criando dados da janela principal

        self.janela_principal = tk.Tk()
        self.janela_principal.title('Konoha')#Define o título da janela
        self.janela_principal.geometry('450x605') #Define o tamanho da janela


        #Define titulo no corpo do programa
        #panel_tile= Label(janela,text='Konoha 1.0',font=('Helvetica', 16),pady=20)
        #panel_tile.pack()


        #Botões de sair e para criar termo

        button = Button(self.janela_principal, text=' Gerar Termo de responsabilidade', command=self.termo)
        button.pack()
        self.botao_sair = Button(self.janela_principal, text='Sair', command=self.janela_principal.destroy)
        self.botao_sair.pack()
        self.botao_sair.pack()

        self.janela_principal.mainloop()

    def termo(self):
        # Variáveis para vsalvar dados

        self.janela_termo = tk.Tk()
        self.janela_termo.geometry('800x450')

        # Criando os frames
        self.frame_titulo_janela = Frame(self.janela_termo)
        self.frame_nome = Frame(self.janela_termo)

        #Adicionando titulo
        self.label_titulo_termo=Label(self.frame_titulo_janela,text='Termo de Responsabilidade',font=('Helvetica',16))

        #empacotando o titulo
        self.label_titulo_termo.pack()
        self.frame_titulo_janela.pack()

        #Adicionando o Label do nome:
        self.label_nome = Label(self.frame_nome, text='Nome do colaborador(a):')

        #Adicionando entry
        self.usuario=Entry(self.frame_nome,width=80)

        #empacotando
        self.label_nome.pack(side='left')
        self.usuario.pack(side='left')

        self.frame_nome.pack()
        print(self.usuario.get())
        mainloop()
    def exibe(self):
        self.N=self.usuario.get()
        messagebox.showinfo('O nome é ', self.N)



obj=termos()
obj.exibe()

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sou bom com Tk Inter, mas o que você precisa fazer ou é atribuir um botão como eu fiz no seu exemplo, ou fazer se quiser apenas a caixa do ENTRY, é fazer um Bind entre o seu Entry com uma variável de classe que serve justamente para esses rastreamentos, no caso  a StringVar: https://effbot.org/tkinterbook/variable.htm

# Trecho do seu código para o ENTRY

		#Adicionando entry
        self.usuario=Entry(self.frame_nome,width=70)

    	#adicionei um botão para chamar a função exibe()
        button = Button(self.janela_termo, text=' Enviar nome', command=self.exibe) # chamei a função exibe(), que você já possui
        button.pack(side='right')
        button.place(x=690, y=26)

Para fazer o Bind tem algumas formas, essa aqui eu achei válida como exemplo: https://stackoverflow.com/questions/39058817/event-callback-after-a-tkinter-entry-widget?rq=1

 

Não sei se é isso que precisa, mas qualquer dúvida poste novamente

O resultado que tive foi esse aqui

image.thumb.png.c71d536162afca53b6ffcc61517aa46b.png

  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito obrigada.

Utilizei o método bind citado em um dos links pois gostarioa de adicionar um botão apenas quando eu for salvar os dados em um documento pois irei adicionar mais entrys .Porém,não entendi bem uma parte do código que estava em um dos links que me mandou,poderia me explicar a seguinte parte: e.bind('<Return>', (lambda _: callback(e))),não entendi o que seria essa lambda_

Compartilhar este post


Link para o post
Compartilhar em outros sites
10 horas atrás, Amanda Kellen disse:

Muito obrigada.

Utilizei o método bind citado em um dos links pois gostarioa de adicionar um botão apenas quando eu for salvar os dados em um documento pois irei adicionar mais entrys .Porém,não entendi bem uma parte do código que estava em um dos links que me mandou,poderia me explicar a seguinte parte: e.bind('<Return>', (lambda _: callback(e))),não entendi o que seria essa lambda_

 

Ok, lambda é o nome que se dá para função anônima no Python e em algumas outras linguagens de programação.

 

veja aqui exemplo simples: https://www.w3schools.com/python/python_lambda.asp

Aqui já dá uma boa aprofundada em lambda: https://realpython.com/python-lambda/

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

javaweb-popup.jpg

CURSO ONLINE DE PROGRAMAÇÃO
FULL STACK

Entre para o mercado que paga mais de R$ 12.000 por mês e não tem crise!

CLIQUE AQUI E INSCREVA-SE AGORA MESMO!