Skip to content

Instantly share code, notes, and snippets.

@taikedz
Last active May 20, 2022 14:39
Show Gist options
  • Save taikedz/f9893d3a580577db630ce603037ca901 to your computer and use it in GitHub Desktop.
Save taikedz/f9893d3a580577db630ce603037ca901 to your computer and use it in GitHub Desktop.
Example of using python directly in a HTML page with DOM access
<!DOCTYPE html>
<html><head>
<style>
python { display: none; }
</style>
<script src="https://cdn.jsdelivr.net/pyodide/v0.20.0/full/pyodide.js"></script>
<script>
// https://pyodide.org/en/stable/usage/quickstart.html
pyscripts = document.getElementsByTagName("python");
let pyodide = null
async function main() {
pyodide = await loadPyodide();
for(i=0; i < pyscripts.length; i++) {
let python_script = pyscripts[i].innerHTML
console.log(pyodide.runPython(python_script))
}
};
main();
</script>
<python>
import js
import time
def add_text(content):
new_elem = js.document.createElement("p")
new_elem.innerText = content
js.document.getElementById("content").appendChild(new_elem)
def count_print(name):
for i in range(20):
add_text(f"{name} {i}")
time.sleep(0.5)
</python>
<python>
# all executions happen with the same context
count_print("First")
</python>
</head>
<body>
<div id="content"></div>
</body>
</html>
@taikedz
Copy link
Author

taikedz commented May 20, 2022

Note that this was justa little expriment. A more useful and usable item is pyscript:

https://pyscript.net

See also https://github.com/pyscript/pyscript/blob/main/docs/tutorials/getting-started.md

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment