Ir para conteúdo
Fórum Script Brasil
  • 0

Como resolver este problema com o tkinter Entry e funções


Pedro Vidal

Pergunta

Então, o objetivo desse programa atualmente é pegar os valores que o usuário colocar no en_agua e printar isso no console. Porém, não consigo fazer a "en_agua.get()" ser reconhecida em outra função. Alguma dica? Algumas bibliotecas eu nem cheguei a usar, porém serão utilizadas futuramente nesse programa, pois quero jogar esses valores de en_agua, en_sal e tals em um arquivo txt ou numa planilha no excel.

Sou novo na área, espero que consigam me ajudar :))

 

from tkinter import *
from time import sleep
import pandas as pd
import openpyxl

def salvar():
    agua = medidas(en_agua.get())
    print(agua)
    
def medidas():
    sleep(0.3)
    inicio.destroy()
    medidas = Tk()
    medidas.title("MEDIDAS")
    medidas.geometry("400x800")

    #imagens
    img_medidas = PhotoImage(file="medidastcc.png")
    img_botao1 = PhotoImage(file="botaosim.png")
    img_botao2 = PhotoImage(file="botaopadrao.png")

    #labels
    lab_medidas = Label(medidas, image=img_medidas)
    lab_medidas.pack()

    #entrada de dados

    en_agua = Entry(medidas, bd=2)
    en_agua.place(width=339, height=50, x=32, y=322)

    en_sal = Entry(medidas, bd=2)
    en_sal.place(width=339, height=50, x=32, y=449)

    en_far = Entry(medidas, bd=2)
    en_far.place(width=339, height=50, x=32, y=584)

    #botoes
    bt_ok = Button(medidas, image=img_botao1)
    bt_ok.place(width=150, height=100, x=35, y=650)

    bt_padrao = Button(medidas, image=img_botao2, command=salvar)
    bt_padrao.place(width=150, height=100, x=220, y=650)

    agua = en_agua.get()

    return medidas()


inicio = Tk()
inicio.title("PROJETO YEAGER")
inicio.geometry("400x800")

#importar as imagens
img_inicio = PhotoImage(file="iniciotcc.png")
img_botao3 = PhotoImage(file="botaoentrar.png")

#labels
lab_inicio = Label(inicio, image=img_inicio)
lab_inicio.pack()

#botao
bt_entrar = Button(inicio, image=img_botao3, command=medidas)
bt_entrar.place(width=200, height=100, x=95, y=550)

inicio.mainloop()

Editado por Pedro Vidal
Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0
6 minutos atrás, ArteEN disse:

precisa usar objetos de armazenamento

stringvar, para strings

intvar, para numeros inteiro

doublevar, para numeros flutuantes

isso faz parte do tkinter, procure na documentação

mas onde eu devo colocar esses doublevar?

no def medidas mesmo? 

Link para o comentário
Compartilhar em outros sites

  • 0
DoubleVar

é uma função que retorna um objeto para guardar e passar valor entre widgets do tkinter

você cria, e passa para a entry, entry por sua vez vai escrever o valor nesse objeto var, e você pega o valor do objeto var

 

https://github.com/elton1013/dro_fresadora

nesse link tem uma aplicação que fiz, vai ser dificil mas se procurar vai achar usando

Editado por ArteEN
Link para o comentário
Compartilhar em outros sites

  • 0
2 minutos atrás, ArteEN disse:
DoubleVar

é uma função que retorna um objeto para guardar e passar valor entre widgets do tkinter

você cria, e passa para a entry, entry por sua vez vai escrever o valor nesse objeto var, e você pega o valor do objeto var

 

https://github.com/elton1013/dro_fresadora

nesse link tem uma aplicação que fiz, vai ser dificil mas se procurar vai achar usando

beleza, vou ver se consigo aplicar. Qualquer coisa volto aqui

vlw por me explicar sobre essa função :))

Link para o comentário
Compartilhar em outros sites

  • 0
19 minutos atrás, ArteEN disse:
DoubleVar

é uma função que retorna um objeto para guardar e passar valor entre widgets do tkinter

você cria, e passa para a entry, entry por sua vez vai escrever o valor nesse objeto var, e você pega o valor do objeto var

 

https://github.com/elton1013/dro_fresadora

nesse link tem uma aplicação que fiz, vai ser dificil mas se procurar vai achar usando

Então, tentei aplicar esse DoubleVar e colocar ele no Entry, mas acabou que me perdi no meio e não sei como prosseguir xdddd poderia me dar uma luz?

image.png

image.png

Link para o comentário
Compartilhar em outros sites

  • 0
import tkinter

root = tkinter.Tk()
var = tkinter.DoubleVar()
entrada = tkinter.Entry(root, textvariable=var)
entrada.pack()

def enter(arg):
    print(var.get())

root.bind('<Return>', func=enter)                                                    

root.mainloop()

 

Link para o comentário
Compartilhar em outros sites

  • 0
21 horas atrás, ArteEN disse:
import tkinter

root = tkinter.Tk()
var = tkinter.DoubleVar()
entrada = tkinter.Entry(root, textvariable=var)
entrada.pack()

def enter(arg):
    print(var.get())

root.bind('<Return>', func=enter)                                                    

root.mainloop()

 

estamos de volta kk

tentei aplicar isso que vccê mandou e deu um resultado meio estranho, meio que mesmo assim não quer registrar os dados e fica entregando o valor padrão '0.0'. Vou deixar o programa aqui, caso consiga dar uma olhada e ver onde está errado, desculpa aí o incomodo

from tkinter import *
from time import sleep
import pandas as pd
import openpyxl

def medidas():
    sleep(0.3)
    inicio.destroy()
    medidas = Tk()
    medidas.title("MEDIDAS")
    medidas.geometry("400x800")

    #imagens
    img_medidas = PhotoImage(file="medidastcc.png")
    img_botao1 = PhotoImage(file="botaosim.png")
    img_botao2 = PhotoImage(file="botaopadrao.png")

    #labels
    lab_medidas = Label(medidas, image=img_medidas)
    lab_medidas.pack()

    #entrada de dados
    en_agua = Entry(medidas, bd=2, textvariable=agua)
    en_agua.place(width=339, height=50, x=32, y=322)

    en_sal = Entry(medidas, bd=2, textvariable=sal)
    en_sal.place(width=339, height=50, x=32, y=449)

    en_far = Entry(medidas, bd=2, textvariable=far)
    en_far.place(width=339, height=50, x=32, y=584)

    #botoes
    bt_ok = Button(medidas, image=img_botao1)
    bt_ok.place(width=150, height=100, x=35, y=650)

    bt_padrao = Button(medidas, image=img_botao2, command=salvar)
    bt_padrao.place(width=150, height=100, x=220, y=650)

    return medidas()

def salvar():
    print(agua.get())
    print(sal.get())
    print(far.get())

inicio = Tk()
inicio.title("PROJETO YEAGER")
inicio.geometry("400x800")

#variaveis 
agua = DoubleVar() 
sal = DoubleVar() 
far = DoubleVar()

#importar as imagens
img_inicio = PhotoImage(file="iniciotcc.png")
img_botao3 = PhotoImage(file="botaoentrar.png")

#labels
lab_inicio = Label(inicio, image=img_inicio)
lab_inicio.pack()

#botao
bt_entrar = Button(inicio, image=img_botao3, command=medidas)
bt_entrar.place(width=200, height=100, x=95, y=550)

inicio.mainloop()

Editado por Pedro Vidal
Link para o comentário
Compartilhar em outros sites

  • 0

segue link para um bom material sobre tk

https://tkdocs.com/

quando ao seu script, não recomendo usar duas janelas, inicio e medida, seria melhor usar frames, ou notebook, tem  mostrando como se usa no link acima

 

from tkinter import *
from time import sleep
import pandas as pd
#import openpyxl


def medidas():
    sleep(0.3)
    inicio.destroy()
    medidas = Tk()
    medidas.title("MEDIDAS")
    medidas.geometry("400x800")

    #variaveis 
    agua = DoubleVar() 
    sal = DoubleVar() 
    far = DoubleVar()

    #imagens
    #img_medidas = PhotoImage(file="medidastcc.png")
    #img_botao1 = PhotoImage(file="botaosim.png")
    #img_botao2 = PhotoImage(file="botaopadrao.png")

    #labels
    lab_medidas = Label(medidas, text='medidastcc')
    lab_medidas.pack()

    #entrada de dados
    en_agua = Entry(medidas, bd=2, textvariable=agua)
    en_agua.place(width=339, height=50, x=32, y=322)

    en_sal = Entry(medidas, bd=2, textvariable=sal)
    en_sal.place(width=339, height=50, x=32, y=449)

    en_far = Entry(medidas, bd=2, textvariable=far)
    en_far.place(width=339, height=50, x=32, y=584)

    #botoes
    bt_ok = Button(medidas, text='botaosim')
    bt_ok.place(width=150, height=100, x=35, y=650)

    bt_padrao = Button(medidas, text='botaopadrao', command=lambda : salvar(agua, sal, far))
    bt_padrao.place(width=150, height=100, x=220, y=650)

    return medidas

def salvar(agua, sal, far):
    print(agua.get())
    print(sal.get())
    print(far.get())

inicio = Tk()
inicio.title("PROJETO YEAGER")
inicio.geometry("400x800")


#importar as imagens
#img_inicio = PhotoImage(file="iniciotcc.png")
#img_botao3 = PhotoImage(file="botaoentrar.png")

#labels
lab_inicio = Label(inicio, text='iniciotcc') #image=img_inicio)
lab_inicio.pack()

#botao
bt_entrar = Button(inicio, text='botoentrar', command=medidas)
bt_entrar.place(width=200, height=100, x=95, y=550)

inicio.mainloop()

 

Editado por ArteEN
Link para o comentário
Compartilhar em outros sites

  • 0
23 minutos atrás, ArteEN disse:

segue link para um bom material sobre tk

https://tkdocs.com/

quando ao seu script, não recomendo usar duas janelas, inicio e medida, seria melhor usar frames, ou notebook, tem  mostrando como se usa no link acima

 

from tkinter import *
from time import sleep
import pandas as pd
#import openpyxl


def medidas():
    sleep(0.3)
    inicio.destroy()
    medidas = Tk()
    medidas.title("MEDIDAS")
    medidas.geometry("400x800")

    #variaveis 
    agua = DoubleVar() 
    sal = DoubleVar() 
    far = DoubleVar()

    #imagens
    #img_medidas = PhotoImage(file="medidastcc.png")
    #img_botao1 = PhotoImage(file="botaosim.png")
    #img_botao2 = PhotoImage(file="botaopadrao.png")

    #labels
    lab_medidas = Label(medidas, text='medidastcc')
    lab_medidas.pack()

    #entrada de dados
    en_agua = Entry(medidas, bd=2, textvariable=agua)
    en_agua.place(width=339, height=50, x=32, y=322)

    en_sal = Entry(medidas, bd=2, textvariable=sal)
    en_sal.place(width=339, height=50, x=32, y=449)

    en_far = Entry(medidas, bd=2, textvariable=far)
    en_far.place(width=339, height=50, x=32, y=584)

    #botoes
    bt_ok = Button(medidas, text='botaosim')
    bt_ok.place(width=150, height=100, x=35, y=650)

    bt_padrao = Button(medidas, text='botaopadrao', command=lambda : salvar(agua, sal, far))
    bt_padrao.place(width=150, height=100, x=220, y=650)

    return medidas

def salvar(agua, sal, far):
    print(agua.get())
    print(sal.get())
    print(far.get())

inicio = Tk()
inicio.title("PROJETO YEAGER")
inicio.geometry("400x800")


#importar as imagens
#img_inicio = PhotoImage(file="iniciotcc.png")
#img_botao3 = PhotoImage(file="botaoentrar.png")

#labels
lab_inicio = Label(inicio, text='iniciotcc') #image=img_inicio)
lab_inicio.pack()

#botao
bt_entrar = Button(inicio, text='botoentrar', command=medidas)
bt_entrar.place(width=200, height=100, x=95, y=550)

inicio.mainloop()

 

caramba, eu nem sabia dessa função lambda. Então ela pega valores e cria uma função com eles? Sobre as janelas, estava pensando em mudar para algo como um banner inicial, que ficaria na tela por uns segundos e já sairia, entrando a janela "medidas". Estava vendo uns comandos e cheguei em um "after", mas agora é mais uma jornada pra descobrir como aplicar kkkk

obrigado demais cara, me salvou

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...