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

Utilizar sleep no Tkinter


Pedro Vidal

Pergunta

Opa, desenvolvendo meu projeto percebi que teria que usar sleep para fazer textos aparecerem na janela em determinado tempo, pesquisei e vi que eles definem o que vai ter no Label em outro local do programa e utilizam o sleep lá, em vez de utilizar na própria janela. Tentei aplicar isso no meu código, mas falhei miseravelmente, adoraria uma ajuda com esse problema :))

Abaixo está todo o código.

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

def fim():
    exit()
    return

def metodo():
    inicio.destroy()
    metodo = Tk()
    metodo.title("PROJETO LIQUI")
    metodo.geometry("400x800")

    #imagens
    img_metodo = PhotoImage(file="escmetodo.png")
    img_auto = PhotoImage(file="botaopadrao.png")
    img_manual = PhotoImage(file="botaomanual.png")

    #labels
    lab_metodo = Label(metodo, image=img_metodo)
    lab_metodo.pack()

    #botoes
    bt_manual = Button(metodo, image=img_manual, command=lambda: manual(metodo))
    bt_manual.place(width=300, height=100, x=55, y=350)

    bt_auto = Button(metodo, image=img_auto, command=lambda: auto(metodo))
    bt_auto.place(width=300, height=100, x=55, y=550)

    return metodo()

def auto(metodo):
    metodo.destroy()
    b2 = open("escpersonalizado.txt", "r")
    agua = float(b2.readline())
    sal = float(b2.readline())
    far = float(b2.readline())
    return auto(metodo)

def manual(metodo):
    metodo.destroy()
    manual = Tk()
    manual.title("PROJETO LIQUI")
    manual.geometry("400x800")

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

    #imagens
    img_medidas = PhotoImage(file="medidastcc.png")
    img_botao_ok = PhotoImage(file="botaosim.png")
    img_botao_salvar = PhotoImage(file="botaosalvar.png")

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

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

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

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

    #botoes
    bt_ok = Button(manual, image=img_botao_ok, command=lambda: proc_manual(manual,agua,sal,far))
    bt_ok.place(width=150, height=100, x=35, y=650)

    bt_padrao = Button(manual, image=img_botao_salvar, command=lambda: salvar(manual, agua, sal, far))
    bt_padrao.place(width=150, height=100, x=220, y=650)

    return manual(metodo)

def salvar(manual, agua, sal, far):
    f_agua = agua.get()
    f_sal = sal.get()
    f_far = far.get()
    if f_agua > 100 or f_sal > 100 or f_far > 100:
        manual.destroy()
        erro()
    else:
        b1 = open("escpersonalizado.txt", "w")
        b1.write("{}\n{}\n{}".format(f_agua, f_sal, f_far))
    return

def text_proc():
    lab_op_val['text'] = "ABERTURA DAS VALVULAS"
    return

def proc_manual(manual,agua,sal,far):
    f_agua = agua.get()
    f_sal = sal.get()
    f_far = far.get()
    if f_agua > 100 or f_sal > 100 or f_far > 100:
        manual.destroy()
        erro()
    else:
        text_proc()
        manual.destroy()
        proc_manual = Tk()
        proc_manual.title("LIQUI")
        proc_manual.geometry("400x800")

        #imagens
        img_proc = PhotoImage(file="proctcc.png")

        #labels
        lab_proc = Label(proc_manual,image=img_proc)
        lab_proc.pack()

        lab_op_val = Label(proc_manual, text="")
        lab_op_val.place(x=200, y=400)

        return proc_manual()

def erro():
    erro = Tk()
    erro.title("ERRO")
    erro.geometry("400x800")

    #imagens
    img_erro = PhotoImage(file="erro.png")
    img_sair = PhotoImage(file="botaosair.png")

    #labels
    lab_erro = Label(erro, image=img_erro)
    lab_erro.pack()

    #botoes
    bt_sair = Button(erro, image=img_sair, command=fim)
    bt_sair.place(width=300, height=100, x=55, y=650)

    return erro()

inicio = Tk()
inicio.title("PROJETO YEAGER")
inicio.geometry("800x550")


#importar as imagens
img_banner = PhotoImage(file="bannertcc.png")

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

inicio.after(2000,metodo)

inicio.mainloop()
Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0
9 horas atrás, ArteEN disse:

não se pode usar sleep junto com tkinter, a explicação é que tkinter tem seu proprio loop principal e o sleep ira contra esse loop, use after

Ok, então ficaria tipo:
 

lab = Label(janela,text="ex")

janela.after(2000)

lab2 = Label(janela,text="ex2")

Desse jeito?

Link para o comentário
Compartilhar em outros sites

  • 0
Em 08/05/2022 em 20:55, ArteEN disse:

quase, as labels só serão exibidas depois de colocar o gerenciador (pack, grid ou place)

acho que seria melhor fazer uma função para exibir cada label

 

Voltando aqui, eu tentei aplicar no meu código, mas não funcionou. Ele acaba aplicando esse tempo na própria abertura da janela, e não no aparecimento dos Labels

lab_op_val = Label(proc_manual, text="sim")
lab_op_val.place(x=200, y=400)
        
proc_manual.after(1000)
        

lab_ed_val = Label(proc_manual, text="não")

lab_ed_val.place(x=200, y=600)

Link para o comentário
Compartilhar em outros sites

  • 0
import tkinter

root = tkinter.Tk()

l1 = tkinter.Label(root, text='teste 1')
l2 = tkinter.Label(root, text='teste 2')

def packL1():
    l1.pack()
    root.after(1000, packL2)

def packL2():
    l2.pack()

root.after(2000, packL1)
root.mainloop()

 

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
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...