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# -*- coding: utf-8 -*-
import tkinter
import tkinter.simpledialog
from Bombilla import Bombilla
"""
Código de: https://tutobasico.com/basicos3-java/
1. Crea una clase Bombilla y un programa que cree objetos Bombilla y utilice
todas las propiedades y métodos.
Propiedades
- estado: si está apagada o encendida (boolean). Por defecto false
- potencia: en vatios (int)
- color: color de la bombilla (String)
- horas: horas que puede estar encendida (float). Por defecto 10
Métodos
- encender: si quedan horas enciende la bombilla, pone la propiedad estado = true y
pide por teclado cuánto tiempo estará encendida. Resta el tiempo de la propiedad horas.
- apagar: pone la propiedad estado = false
- getEstado: devuelve el estado de la bombilla
- setPotencia: se le pasa una potencia por parámetro y la sustituye por lo que
hay en la propiedad potencia
- getPotencia: devuelve la potencia de la bombilla
- setColor: se le pasa el color por parámetro y si la bombilla está encendida
la apaga y luego cambia el color.
- getColor: imprime por pantalla el color de la bombilla
- getHorasr: imprime por pantalla las horas de la bombilla
- recargar: pregunta cuántas horas quiere el usuario recargar y las suma a la
propiedad horas
"""
def main():
root = tkinter.Tk() # create main window
# root.iconify() # minimize main window
root.withdraw() # hide main window
opcion = -1
objeto = Bombilla()
while opcion != 0:
opcion = tkinter.simpledialog.askinteger(
"Sistema solicita",
"* Ingrese opción:"
+ "\n1.ENCENDER"
+ "\n2.APAGAR "
+ "\n3.VER ESTADO"
+ "\n4.CAMBIAR POTENCIA"
+ "\n5.VER POTENCIA"
+ "\n6.CAMBIA COLOR"
+ "\n7.VER COLOR"
+ "\n8.RECARGAR"
+ "\n9.VER HORAS"
+ "\n0.SALIR",
)
if opcion == 1:
tiempo = tkinter.simpledialog.askfloat("Sistema solicita", "Cuantas horas va a estar encendida la bombilla?\n")
tkinter.messagebox.showinfo("Sistema notifica", objeto.encender(tiempo))
break
elif opcion == 2:
objeto.apagar()
break
elif opcion == 3:
if objeto.isEstado():
tkinter.messagebox.showinfo("Sistema notifica", "La bombilla esta encendida\n")
else:
tkinter.messagebox.showinfo("Sistema notifica", "La bombilla esta apagada\n")
break
elif opcion == 4:
pot = tkinter.simpledialog.askfloat("Sistema solicita", "Introduce nueva potencia \n")
objeto.setPotencia(pot)
break
elif opcion == 5:
tkinter.messagebox.showinfo("Sistema notifica", "La potencia es \n" + objeto.getPotencia())
break
elif opcion == 6:
color = tkinter.simpledialog.askstring("Sistema solicita", "Introduce nuevo color\n")
objeto.setColor(color)
break
elif opcion == 7:
tkinter.messagebox.showinfo("Sistema notifica", "El color es \n" + objeto.getColor())
break
elif opcion == 8:
recarga = tkinter.simpledialog.askfloat("Sistema solicita", "¿Cuantas horas quiere recargar? \n")
objeto.recargar(recarga)
break
elif opcion == 9:
tkinter.messagebox.showinfo("Sistema notifica", "Las horas son \n" + str(objeto.getHoras()))
break
elif opcion == 0:
tkinter.messagebox.showinfo("Sistema notifica", "Adios")
break
else:
tkinter.messagebox.showerror("Sistema notifica", "Error. Introduce un valor del menu")
break
if __name__ == "__main__":
main()
Me llama la atención que no vuelve al menú después de ingresar la opción.
Espero su respuesta y saludos.