[英]Is it possible to create a non-editable text box like this in streamlit ? St.write would only write but i need it in a text box
[英]Streamlit - Cannot repeat emoji string using st.write()
概括:
通常要在 Python 中重復一個字符串,您會使用 (string * n),其中 n = 重復次數。
在 Streamlit 中,您可以使用st.write()
中相應的簡碼打印表情符號。
我已經能夠使用st.write(emoji1, emoji2, emoji3)
成功打印表情符號,但是當我使用 (string *n) 重復表情符號字符串時,st.write 將簡碼打印為字符串而不是打印實際的表情符號.
這是 Streamlit 代碼的缺點,還是我遺漏了什么?
這是該應用程序的鏈接,因此您可以看到:
https://halfgingerbeard-30daysofstreamlit-emoji-frame-creator-bsodkg.streamlit.app/
嘗試/預期:
使用 Streamlit 接受的表情符號短代碼的數據框作為 df_emoji:
emoji1 = st.select_slider('Select emoji 1:', options = df_emoji['shortcodes'], value=':sunglasses:')
emoji2 = st.select_slider('Select emoji 2:', options = df_emoji['shortcodes'], value=':white_check_mark:')
emoji3 = st.select_slider('Select emoji 3:', options = df_emoji['shortcodes'], value=':coffee:')
e_columns = st.number_input('Select Number of Columns:',1,10,3)
st.write(emoji1, emoji2, emoji3) # this works successfully
st.write((emoji1, emoji2, emoji3) * e_columns)[:e_columns]) # this prints out the string values of the shortcodes instead of the actual emoji
我期待 e_columns 的長度重復連接的表情符號字符串,而不是字符串格式的每個簡碼
例如(與':太陽鏡:')
首先,你的最后一行有語法錯誤:
st.write((emoji1, emoji2, emoji3) * e_columns)[:e_columns])
# ^ unmatched
添加一個額外的開放括號(
就在st.write
之后:
st.write(((emoji1, emoji2, emoji3) * e_columns)[:e_columns])
# ^ here
現在,在您第一次調用st.write()
時,您將每個單獨的短代碼作為單獨的參數傳遞:
st.write(emoji1, emoji2, emoji3) # 3 parameters
但是,在它下面的第二個調用中,您向它傳遞了一個參數——一個元組:
st.write(((emoji1, emoji2, emoji3) * e_columns)[:e_columns]) # just one parameter
嘗試使用解包運算符*
將每個表情符號分離成一個單獨的參數:
st.write(*((emoji1, emoji2, emoji3) * e_columns)[:e_columns])
# ^
因此,如果e_columns
是 5,例如,從 Python 的角度來看,實際的函數調用將是
st.write(emoji1, emoji2, emoji3, emoji1, emoji2)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.