def show():
    # note to self you can check for empty with if statement st.image(image,
    # caption='PIL Image', use_column_width=True)
    from os import environ
    import streamlit as st
    from microscope_demo_client import MicroscopeDemo

    # from my_secrets import HIVEMQ_BROKER

    HIVEMQ_BROKER = environ["HIVEMQ_BROKER"]

    port = 8883
    microscopes = [
        "microscope",
        "microscope2",
        "deltastagetransmission",
        "deltastagereflection",
    ]

    st.title("GUI control")

    microscopeselection = st.selectbox(
        "Choose a microscope:", microscopes, index=microscopes.index("microscope2")
    )

    access_key = st.text_input(label="Enter your access key here:", max_chars=1000)

    def get_pos_button():
        microscope = MicroscopeDemo(
            HIVEMQ_BROKER,
            port,
            microscopeselection + "clientuser",
            access_key,
            microscopeselection,
        )
        # "acmicroscopedemo" is a placeholder until access keys are implemented
        pos = microscope.get_pos()
        st.write("x: " + str(pos["x"]))
        st.write("y: " + str(pos["y"]))
        st.write("z: " + str(pos["z"]))
        microscope.end_connection()

    def take_image_button():
        microscope = MicroscopeDemo(
            HIVEMQ_BROKER,
            port,
            microscopeselection + "clientuser",
            access_key,
            microscopeselection,
        )
        # "acmicroscopedemo" is a placeholder until access keys are implemented
        st.image(
            microscope.take_image(),
            caption="Taken from the microscope camera",
            use_column_width=True,
        )
        microscope.end_connection()

    def focus_button():
        microscope = MicroscopeDemo(
            HIVEMQ_BROKER,
            port,
            microscopeselection + "clientuser",
            access_key,
            microscopeselection,
        )
        # "acmicroscopedemo" is a placeholder until access keys are implemented
        microscope.focus(focusamount)
        st.write("Autofocus complete")
        microscope.end_connection()

    def move_button():
        microscope = MicroscopeDemo(
            HIVEMQ_BROKER,
            port,
            microscopeselection + "clientuser",
            access_key,
            microscopeselection,
        )
        # "acmicroscopedemo" is a placeholder until access keys are implemented
        microscope.move(xmove, ymove)
        st.write("Move complete")
        microscope.end_connection()

    st.button("Get position", on_click=get_pos_button)
    st.write("")
    st.button("Take image", on_click=take_image_button)
    st.write("")
    focusamount = st.number_input(
        "Autofocus amount 1-5000", min_value=1, max_value=5000, step=100, value=1000
    )
    st.button("Focus", on_click=focus_button)
    st.write("")
    xmove = st.number_input("X", min_value=-20000, max_value=20000, step=250, value=0)
    ymove = st.number_input("Y", min_value=-20000, max_value=20000, step=250, value=0)
    st.button("Move", on_click=move_button)