elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Problema programa Python
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema programa Python  (Leído 1,576 veces)
Akendore

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Problema programa Python
« en: 6 Septiembre 2015, 21:54 »


[NOTA DEL MODERADOR]
No uses la etiqueta de citas, debes usar las etiquetas GeShi para insertar código. y postear en la sección adecuada cómo ya te han comentado.




¡Buenas!

Estoy intentando hacer una cuenta atrás con interfaz gráfica. El problema que tengo es que no se como
dentro de una función actualizar una label. Acabo de empezar en esto de la programación, llevo un mes.

Este es mi código:

Código
  1. from tkinter import *
  2. from time import *
  3. from tkinter.messagebox import *
  4.  
  5. def mostrar(v): v.deiconify()
  6. def ocultar(v): v.withdraw()
  7. def ejecutar(f): v1.after(200,f)
  8.  
  9. def cuentaatras(_h,_m,_s):
  10.    x = True
  11.    try:
  12.        h = int(_h.get())
  13.        m = int(_m.get())
  14.        s = int(_s.get())
  15.        while (x==True):
  16.            _h.set(h)
  17.            _m.set(m)
  18.            _s.set(s)
  19.            print(str(h)+":"+str(m)+":"+str(s))#Test
  20.            if s==0 and m!=0:
  21.                sleep(1)
  22.                s=60
  23.                m-=1
  24.                print(str(h)+":"+str(m)+":"+str(s))#Test
  25.            elif s==0 and m==0 and h!=0:
  26.                sleep(1)
  27.                s=60
  28.                m=60
  29.                h-=1
  30.                print(str(h)+":"+str(m)+":"+str(s))#Test
  31.            elif s==0 and m==0 and h==0:
  32.                x=False
  33.            sleep(1)
  34.            s-=1
  35.    except ValueError:
  36.        v1a.withdraw()
  37.        showerror("Rellena todos los campos","Rellena los campos con 0 para que sean invalidos")
  38.  
  39. #ventana cuenta atrás
  40. v1 = Tk()
  41. v1.title("Cuenta atrás")
  42. v1.resizable(0,0)
  43. f1=Frame(v1)
  44. f1.grid(column=0,row=0,padx=(10,10),pady=(10,10))
  45.  
  46. #ventana cuenta atrás 2
  47. v1a = Toplevel(v1)
  48. v1a.title = v1.title
  49. v1a.resizable(0,0)
  50. v1a.withdraw()
  51.  
  52. #Elementos Cuenta atrás
  53.    #Labels
  54. LEnCA = Label(f1,text="Introduce el tiempo que quieras contar.").grid(column=1,row=1,columnspan=3,pady=(0,5))
  55. Lh1 = Label(f1,text="Horas:").grid(column=1,row=2)
  56. Lm1 = Label(f1,text="Minutos:").grid(column=2,row=2)
  57. Ls1 = Label(f1,text="Segundos:").grid(column=3,row=2)
  58.  
  59.    #Entradas
  60. Eh = StringVar()
  61. Ehoras = Entry(f1,width=5,textvar=Eh).grid(column=1,row=3)
  62. Em = StringVar()
  63. Eminutos = Entry(f1,width=5,textvar=Em).grid(column=2,row=3)
  64. Es = StringVar()
  65. Esegundos = Entry(f1,width=5,textvar=Es).grid(column=3,row=3)
  66.    #Botones
  67. Bstart1 = Button(f1,text="Start",command=lambda:ejecutar(mostrar(v1a)or (cuentaatras(Eh,Em,Es)))).grid(column=4,row=3)
  68. Bcerrar1= Button(f1,text="Cerrar",command=lambda:ejecutar(ocultar(v1))).grid(column=2,row=4)
  69.  
  70. #Elementos Cuenta atrás 2
  71.    #Labels
  72. h3 = StringVar()
  73. Lh3 = Label(v1a,text=h3).grid(column=1,row=2)
  74. m3 = StringVar()
  75. Mh3 =Label(v1a,text=m3).grid(column=2,row=2)
  76. s3 = StringVar()
  77. Ls3 = Label(v1a,text=s3).grid(column=3,row=2)
  78.    #Botones
  79. Bparar = Button(v1a,text="Parar",command=()).grid(column=4,row=2)
  80. Bcerrar1= Button(v1a,text="Cerrar",command=lambda:ejecutar(ocultar(v1a))).grid(column=2,row=3)
  81. v1.mainloop()


Muchas gracias :)


« Última modificación: 6 Septiembre 2015, 22:57 por Eleкtro » En línea

YuseTist


Desconectado Desconectado

Mensajes: 396


$~*|_


Ver Perfil
Re: Problema programa Python
« Respuesta #1 en: 6 Septiembre 2015, 21:57 »

Buenas,

Puedes probar así:

Código
  1. var = StringVar()
  2. var.set('Texto')
  3.  
  4. l = Label(v1, textvariable = var)
  5. l.pack()


PD: El tema está en la sección equivocada, Python tiene lugar en Scripting

Saludos.


« Última modificación: 6 Septiembre 2015, 22:05 por YuseTist » En línea

Esta página web no está disponible - Google Chrome
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.709



Ver Perfil
Re: Problema programa Python
« Respuesta #2 en: 7 Septiembre 2015, 01:29 »

Tal y cómo te ha comentado @YuseTist.

Aquí tienes una referencia de terceros donde explican todos los parámetros/opciones:
Python Tkinter Label

...esta creo que es la referencia oficial de TKinter pero no estoy seguro:
Tkinter 8.5 reference: a GUI for Python

Y por último la referencia oficial de TCL/TK:
Tcl8.5.18/Tk8.5.18 Documentation
(en algunos casos, al tomar la información de la referencia oficial, necesitarás realizar pequeñas adaptaciones al traducirlo a TKinter por algunos keywords de Python que utiliza TK)

Saludos
« Última modificación: 7 Septiembre 2015, 01:37 por Eleкtro » En línea


tincopasan


Desconectado Desconectado

Mensajes: 1.228

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: Problema programa Python
« Respuesta #3 en: 7 Septiembre 2015, 05:31 »

un ejemplo simple de lo que querés hacer, obvio que lo tenés que adaptar a tus necesidades.
Código
  1. import tkinter as tk
  2. import time
  3.  
  4. def cuenta_atras():
  5.    # inicio en 3 minutos
  6.    for t in range(180, -1, -1):
  7.        sf = "{:02d}:{:02d}".format(*divmod(t, 60))
  8.        time_str.set(sf)
  9.        root.update()
  10.        # espera 1 segundo
  11.        time.sleep(1)
  12. root = tk.Tk()
  13. time_str = tk.StringVar()
  14. # esta es la parte del label
  15. label_font = ('helvetica', 40)
  16. tk.Label(root, textvariable=time_str, font=label_font, bg='white',
  17.         fg='blue', relief='raised', bd=3).pack(fill='x', padx=5, pady=5)
  18. tk.Button(root, text='Count Start', command=cuenta_atras).pack()
  19. tk.Button(root, text='Count Stop', command=root.destroy).pack()
  20. root.mainloop()
En línea

Akendore

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Problema programa Python
« Respuesta #4 en: 7 Septiembre 2015, 19:33 »

un ejemplo simple de lo que querés hacer, obvio que lo tenés que adaptar a tus necesidades.
Código
  1. import tkinter as tk
  2. import time
  3.  
  4. def cuenta_atras():
  5.    # inicio en 3 minutos
  6.    for t in range(180, -1, -1):
  7.        sf = "{:02d}:{:02d}".format(*divmod(t, 60))
  8.        time_str.set(sf)
  9.        root.update()
  10.        # espera 1 segundo
  11.        time.sleep(1)
  12. root = tk.Tk()
  13. time_str = tk.StringVar()
  14. # esta es la parte del label
  15. label_font = ('helvetica', 40)
  16. tk.Label(root, textvariable=time_str, font=label_font, bg='white',
  17.         fg='blue', relief='raised', bd=3).pack(fill='x', padx=5, pady=5)
  18. tk.Button(root, text='Count Start', command=cuenta_atras).pack()
  19. tk.Button(root, text='Count Stop', command=root.destroy).pack()
  20. root.mainloop()


Me ha servido, ¡gracias!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
PROGRAMA EN PYTHON
Scripting
D@V1D94 2 4,255 Último mensaje 31 Enero 2012, 20:30
por D@V1D94
PROBLEMA AL EJECUTAR UN PROGRAMA PYTHON UTILIZANDO (PHP) SHELL_EXEC
Scripting
Andrew98 1 2,253 Último mensaje 3 Mayo 2013, 09:39
por adastra
{Python 3.4} Problema con programa matrices
Scripting
dj28 2 2,442 Último mensaje 7 Julio 2014, 00:21
por Almapa
[Python + QT4] Problema con barra de navegador hecho con python y QT4
Scripting
darkweb64 3 1,644 Último mensaje 18 Mayo 2015, 17:23
por darkweb64
MOVIDO: Problema programa Python
Programación General
Eleкtro 0 611 Último mensaje 6 Septiembre 2015, 22:43
por Eleкtro
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines