File size: 3,004 Bytes
5ecafea
8d82a89
5ecafea
 
8d82a89
 
 
 
5b9f993
8d82a89
 
 
 
 
 
 
 
5b9f993
8d82a89
 
 
5b9f993
8d82a89
5b9f993
8d82a89
5ecafea
8d82a89
5b9f993
 
 
5ecafea
8d82a89
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5b9f993
 
8d82a89
 
 
 
 
 
5b9f993
 
 
 
8d82a89
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import streamlit as st
from datetime import datetime
import time

# Function to convert seconds to a minutes:seconds format
def format_time(seconds):
    """Convert seconds to a minutes:seconds format."""
    return f"{seconds // 60:02d}:{seconds % 60:02d}"

# Sidebar for customization options
font_size = 60  # Fixed font size for the timer
big_font_size = 100  # Fixed big font size for the timer (while running)
font_styles = ["Arial", "Helvetica", "Times New Roman", "Courier", "Verdana"]  # Example font styles
selected_font_style = st.sidebar.selectbox('Select font style for the timer:', font_styles)  # Font style selection
background_color = st.sidebar.color_picker('Background color for the timer:', '#FFFFFF')
font_color = st.sidebar.color_picker('Font color for the timer:', '#000000')
app_title = st.sidebar.text_input('App title', 'My Streamlit App')  # App title input

st.title(app_title)  # Display the app title

# Initialize session state variables for the timer
if 'countdown' not in st.session_state:
    st.session_state['countdown'] = 0
if 'timer_active' not in st.session_state:
    st.session_state['timer_active'] = False

# Function to start the timer
def start_timer():
    st.session_state.timer_active = True
    st.session_state.countdown_end_time = time.time() + st.session_state.countdown

# Timer setup in the main page
st.write("")  # For vertical spacing
col1, col2, col3 = st.columns([1,2,1])  # Create three columns and place the timer in the middle one
with col2:
    with st.form("Timer"):
        input_seconds = st.number_input("Set timer (in seconds):", min_value=10, max_value=36000, value=180, step=10)
        cols = st.columns(2)
        start_submitted = cols[0].form_submit_button("Start Timer")
        stop_submitted = cols[1].form_submit_button("Stop Timer")
        if start_submitted:
            st.session_state.countdown = input_seconds
            start_timer()
        if stop_submitted:
            st.session_state.timer_active = False

# Display the countdown timer
if st.session_state.timer_active:
    elapsed_time = int(time.time() - (st.session_state.countdown_end_time - st.session_state.countdown))
    remaining_seconds = max(0, st.session_state.countdown - elapsed_time)
    
    current_font_size = big_font_size if st.session_state.timer_active else font_size  # Use big_font_size if timer is active
    
    if remaining_seconds > 0:
        col2.markdown(f'<div style="font-size: {current_font_size}px; font-family: {selected_font_style}; font-weight: bold; color: {font_color}; background-color: {background_color};">{format_time(remaining_seconds)}</div>', unsafe_allow_html=True)
        time.sleep(1)
        st.experimental_rerun()
    else:
        st.session_state.timer_active = False
        col2.markdown(f'<div style="font-size: {font_size}px; font-family: {selected_font_style}; font-weight: bold; color: {font_color}; background-color: {background_color};">00:00</div>', unsafe_allow_html=True)
        st.balloons()