Foros del Web » Programando para Internet » Python »

[SOLUCIONADO] simpledialog usando while

Estas en el tema de simpledialog usando while en el foro de Python en Foros del Web. Hola a todos, verán estoy empezando a usar python para dar clases particulares y también para darle un uso al mismo (sé lo que algunos ...
  #1 (permalink)  
Antiguo 15/07/2019, 22:17
Avatar de detective_jd  
Fecha de Ingreso: abril-2011
Ubicación: Salto
Mensajes: 437
Antigüedad: 12 años, 11 meses
Puntos: 6
simpledialog usando while

Hola a todos, verán estoy empezando a usar python para dar clases particulares y también para darle un uso al mismo (sé lo que algunos pensarán... "ahora con otro lenguaje más") la cuestión es la siguiente y es que no puedo hacer que después de hacer un menú con tkinter cuando eligo una opción no me regresa al menú sino que termina el código:

Código Python:
Ver original
  1. # -*- coding: utf-8 -*-
  2. import tkinter
  3. import tkinter.simpledialog
  4. from Bombilla import Bombilla
  5.  
  6. """
  7.    Código de: https://tutobasico.com/basicos3-java/
  8.    
  9.    1. Crea una clase Bombilla y un programa que cree objetos Bombilla y utilice
  10.    todas las propiedades y métodos.
  11.    
  12.        Propiedades
  13.            - estado: si está apagada o encendida (boolean). Por defecto false
  14.            - potencia: en vatios (int)
  15.            - color: color de la bombilla (String)
  16.            - horas: horas que puede estar encendida (float). Por defecto 10
  17.        Métodos
  18.            - encender: si quedan horas enciende la bombilla, pone la propiedad estado = true y
  19.              pide por teclado cuánto tiempo estará encendida. Resta el tiempo de la propiedad horas.
  20.            - apagar: pone la propiedad estado = false
  21.            - getEstado: devuelve el estado de la bombilla
  22.            - setPotencia: se le pasa una potencia por parámetro y la sustituye por lo que
  23.              hay en la propiedad potencia
  24.            - getPotencia: devuelve la potencia de la bombilla
  25.            - setColor: se le pasa el color por parámetro y si la bombilla está encendida
  26.              la apaga y luego cambia el color.
  27.            - getColor: imprime por pantalla el color de la bombilla
  28.            - getHorasr: imprime por pantalla las horas de la bombilla
  29.            - recargar: pregunta cuántas horas quiere el usuario recargar y las suma a la
  30.              propiedad horas
  31. """
  32.  
  33.  
  34. def main():
  35.     root = tkinter.Tk()  # create main window
  36.     # root.iconify() # minimize main window
  37.     root.withdraw()  # hide main window
  38.     opcion = -1
  39.     objeto = Bombilla()
  40.     while opcion != 0:
  41.         opcion = tkinter.simpledialog.askinteger(
  42.             "Sistema solicita",
  43.             "* Ingrese opción:"
  44.             + "\n1.ENCENDER"
  45.             + "\n2.APAGAR "
  46.             + "\n3.VER ESTADO"
  47.             + "\n4.CAMBIAR POTENCIA"
  48.             + "\n5.VER POTENCIA"
  49.             + "\n6.CAMBIA COLOR"
  50.             + "\n7.VER COLOR"
  51.             + "\n8.RECARGAR"
  52.             + "\n9.VER HORAS"
  53.             + "\n0.SALIR",
  54.         )
  55.         if opcion == 1:
  56.             tiempo = tkinter.simpledialog.askfloat("Sistema solicita", "Cuantas horas va a estar encendida la bombilla?\n")
  57.             tkinter.messagebox.showinfo("Sistema notifica", objeto.encender(tiempo))
  58.             break
  59.         elif opcion == 2:
  60.             objeto.apagar()
  61.             break
  62.         elif opcion == 3:
  63.             if objeto.isEstado():
  64.                 tkinter.messagebox.showinfo("Sistema notifica", "La bombilla esta encendida\n")
  65.             else:
  66.                 tkinter.messagebox.showinfo("Sistema notifica", "La bombilla esta apagada\n")
  67.             break
  68.         elif opcion == 4:
  69.             pot = tkinter.simpledialog.askfloat("Sistema solicita", "Introduce nueva potencia \n")
  70.             objeto.setPotencia(pot)
  71.             break
  72.         elif opcion == 5:
  73.             tkinter.messagebox.showinfo("Sistema notifica", "La potencia es \n" + objeto.getPotencia())
  74.             break
  75.         elif opcion == 6:
  76.             color = tkinter.simpledialog.askstring("Sistema solicita", "Introduce nuevo color\n")
  77.             objeto.setColor(color)
  78.             break
  79.         elif opcion == 7:
  80.             tkinter.messagebox.showinfo("Sistema notifica", "El color es \n" + objeto.getColor())
  81.             break
  82.         elif opcion == 8:
  83.             recarga = tkinter.simpledialog.askfloat("Sistema solicita", "¿Cuantas horas quiere recargar? \n")
  84.             objeto.recargar(recarga)
  85.             break
  86.         elif opcion == 9:
  87.             tkinter.messagebox.showinfo("Sistema notifica", "Las horas son \n" + str(objeto.getHoras()))
  88.             break
  89.         elif opcion == 0:
  90.             tkinter.messagebox.showinfo("Sistema notifica", "Adios")
  91.             break
  92.         else:
  93.             tkinter.messagebox.showerror("Sistema notifica", "Error. Introduce un valor del menu")
  94.             break
  95.  
  96.  
  97. if __name__ == "__main__":
  98.     main()

Me llama la atención que no vuelve al menú después de ingresar la opción.

Espero su respuesta y saludos.
__________________
Si te interesa, visita mi perfil de Linkedin. Gracias
  #2 (permalink)  
Antiguo 18/07/2019, 22:33
Avatar de detective_jd  
Fecha de Ingreso: abril-2011
Ubicación: Salto
Mensajes: 437
Antigüedad: 12 años, 11 meses
Puntos: 6
Respuesta: simpledialog usando while

Resolví el problema, resulta que los break hacían que el código terminara de ejecutarse, los borré y problema resuelto.

Gracias.
__________________
Si te interesa, visita mi perfil de Linkedin. Gracias

Etiquetas: usando
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:06.