When I run the input function inside the pyscript tags like this:
<py-script>
user_input = input("what is your name")
print(user_input)
</py-script>
it will ask the question before the loading screen closes, and the loading screen won't even close until the prompt is answered.
I have tried to use promises in javascript, a text input, and a button to replace the input function in python. However, Py-Script doesn't wait until the promise is resolved and just immediately prints out None. it is almost like py-script is ignoring the wait even though it seems like the promise is still running in the background (i used console.log() to test for that).
And yes, i have already tried to use skulpt and flask and ajax requests. Either they don't work, or they ask the question too early. I just want a way to run python code (with input() functions) in the browser, so if anyone knows any alternatives to py-script, it would be greatly appreciated.
Here is the js and py-script code btw.
<py-script>
from js import input
user_input = input("what is your name?\n") #this input function is the one defined in the js code. not the builtin input function bc that one doesn't work.
</py-script>
<script>
var flag = false;
function click() {
flag = true;
}
function waitUntilTrue() {
return new Promise(resolve => {
const check = () => {
if (flag == false) {
resolve();
} else {
setTimeout(check, 100); // Wait for 100 milliseconds before checking again
}
};
check();
});
}
function input(prompt) {
$("#show-question").text(prompt); // asks the question.
waitUntilTrue();
var userInput = $("#submit-input").val(); //this line gets the text that the user wants to input, or: the answer.
return userInput;
}
</script>
Via Active questions tagged javascript - Stack Overflow https://ift.tt/REGDlQj
Comments
Post a Comment