Reloj / app.py
MASS24's picture
Create app.py
eca58c7 verified
import streamlit as st
import time
import pytz
from datetime import datetime, timedelta
# Helper Functions
def get_timezones():
return ['UTC', 'US/Eastern', 'Europe/London', 'Asia/Kolkata', 'Asia/Tokyo', 'Australia/Sydney']
def format_time(seconds):
mins, secs = divmod(seconds, 60)
hours, mins = divmod(mins, 60)
return f"{int(hours):02d}:{int(mins):02d}:{int(secs):02d}"
# Streamlit App
st.set_page_config(page_title="Clock App", page_icon="🕰️", layout="centered")
st.title("🕰️ Clock Application")
menu = st.sidebar.radio("Select Function", ("World Clock", "Alarm Clock", "Stopwatch", "Timer"))
# --- World Clock --- #
if menu == "World Clock":
st.header("🌎 World Clock")
selected_timezones = st.multiselect("Choose timezones", get_timezones(), default=['UTC'])
placeholder = st.empty()
while True:
with placeholder.container():
for tz in selected_timezones:
timezone = pytz.timezone(tz)
time_now = datetime.now(timezone).strftime("%Y-%m-%d %H:%M:%S")
st.write(f"**{tz}**: {time_now}")
time.sleep(1)
placeholder.empty()
# --- Alarm Clock --- #
elif menu == "Alarm Clock":
st.header("⏰ Alarm Clock")
alarm_time = st.time_input("Set Alarm Time")
alarm_set = st.button("Set Alarm")
if alarm_set:
st.success(f"Alarm is set for {alarm_time}!")
while True:
now = datetime.now().time()
if (now.hour, now.minute) == (alarm_time.hour, alarm_time.minute):
st.balloons()
st.success("⏰ It's Time!")
break
time.sleep(20)
# --- Stopwatch --- #
elif menu == "Stopwatch":
st.header("⏱️ Stopwatch")
if "stopwatch_running" not in st.session_state:
st.session_state.stopwatch_running = False
st.session_state.start_time = None
st.session_state.elapsed = 0
col1, col2, col3 = st.columns(3)
with col1:
if st.button("Start"):
if not st.session_state.stopwatch_running:
st.session_state.start_time = time.time() - st.session_state.elapsed
st.session_state.stopwatch_running = True
with col2:
if st.button("Pause"):
if st.session_state.stopwatch_running:
st.session_state.elapsed = time.time() - st.session_state.start_time
st.session_state.stopwatch_running = False
with col3:
if st.button("Reset"):
st.session_state.start_time = None
st.session_state.elapsed = 0
st.session_state.stopwatch_running = False
st.subheader("Elapsed Time")
placeholder = st.empty()
while st.session_state.stopwatch_running:
elapsed = time.time() - st.session_state.start_time
placeholder.subheader(format_time(elapsed))
time.sleep(0.1)
else:
placeholder.subheader(format_time(st.session_state.elapsed))
# --- Timer --- #
elif menu == "Timer":
st.header("⏲️ Timer")
minutes = st.number_input("Set Timer (minutes)", min_value=0, max_value=120, value=1)
start_timer = st.button("Start Timer")
if start_timer:
total_seconds = minutes * 60
placeholder = st.empty()
for remaining in range(total_seconds, -1, -1):
placeholder.subheader(format_time(remaining))
time.sleep(1)
st.balloons()
st.success("⏳ Time's up!")