Comments (2)
I've found a workaround but still I think it would be better if the widget would behave same as the built-in widgets.
import os
import streamlit as st
from streamlit_ace import st_ace
# create file if doesn't exist
if not os.path.exists("file.txt"):
open("file.txt", "w").close()
with open("file.txt", "r") as f:
content = f.read()
# the key must be assigned otherwise it's probably generated from content again an again on each re-run
# and thus the old content is still reloaded from the file
new_content = st_ace(content, key="content")
# after changing the editor's content, whole script will be executed from the top
# the content set to the st_ace won't be used since the key "content" exists in st.session_state
# and to accept a change on re-run the key must be changed
if new_content != content:
with open("file.txt", "w") as f:
f.write(new_content)
Note that it doesn't work with
st.text_area
, instead we must setst.session_state["content"]
before thest.text_area
is created:
st.session_state["content"] = content
new_content = st.text_area("caption", key="content") # do NOT touch the value here
Also note that if you want to change the editor content on some re-run (e.g. when choosing different file), the key must be changed or removed from
st.session_state
.
from streamlit-ace.
Hello @Mi-La,
Unfortunately it is not an issue of this component, but of streamlit custom components in general. They don't support callbacks or session state binding for now.
This feature was already requested on streamlit repository : streamlit/streamlit#3977
from streamlit-ace.
Related Issues (20)
- Require either `streamlit` OR `streamlit-nightly` to avoid conflicts HOT 1
- Customise width and height HOT 2
- trouble loading the streamlit_ace.ace component HOT 10
- Default Text? HOT 1
- Is there a way to print the output of the code defined in value? HOT 1
- Loading a file into the Editor HOT 1
- Can't input code properly into st.ace editor. HOT 1
- demo is broken HOT 1
- scroll bar to be added
- Can it support to keep displaying the information from a file which keeps changing? HOT 1
- Getting inputs and output the result of the code. HOT 2
- Missing documentation on assigning markers (and annotations) HOT 1
- How to reset state of code editor? HOT 2
- what does the apply button do? HOT 3
- Expose autocompletion settings
- Add more examples to understand it.
- Component does not render on iOS devices HOT 3
- Component should not have a submit button HOT 2
- Can it run/compiled when it run? HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from streamlit-ace.