使用textarea for python input()到Skulpt

时间:2018-03-03 13:00:55

标签: python skulpt

我想在Skulpt中运行Python input()函数时使用textarea。默认是使用警告框 - 我想改用textarea。

我试图让这个工作,但是当我尝试这个例子时没有任何反应:  https://github.com/skulpt/skulpt/issues/685

其他一切正常,因为我想要它。请帮忙! :d

<!DOCTYPE html>
<html lang="en">
<head>
<script src="js/jquery-3.2.1.min.js" type="text/javascript"></script> 
<script src="js/debugger.js" type="text/javascript"></script> 
<script src="js/skulpt.min.js" type="text/javascript"></script>
<script src="js/skulpt-stdlib.js" type="text/javascript"></script> 
<title>i dont like the alert boxes</title>
<style type="text/css" media="screen">
    #source{ 
        position: relative;
        width: 500px;
        height: 300px;
    }
    #console{ 
        position: relative;
        width: 500px;
        height: 100px;
        overflow: scroll;
    }
    body{
        background-color: whitesmoke;
    }
    #turtleCanvas{
        position: relative;
        border: 1px;
        border-color: firebrick;
        border-collapse: collapse;
        border-style: solid;
        width: 500px;
    }
</style>
<script src="js/brython/brython.js" type="text/javascript"></script>
</head>
<body onload="brython()">

<script type="text/javascript"> 
function outf(text) { 
    var mypre = document.getElementById("console"); 
    mypre.innerHTML = mypre.innerHTML + text; 
} 
function builtinRead(x) {
    if (Sk.builtinFiles === undefined || Sk.builtinFiles["files"][x] === undefined)
            throw "File not found: '" + x + "'";
    return Sk.builtinFiles["files"][x];
}

function runit() { 
   var editor = ace.edit("source");
   var code = editor.getValue();
   document.getElementById("hiddenCode").innerHTML = code;
   var prog = document.getElementById("hiddenCode").value; 
   var mypre = document.getElementById("console"); 
   mypre.innerHTML = ''; 
   Sk.pre = "console";
   Sk.configure({output:outf, read:builtinRead}); 
   (Sk.TurtleGraphics || (Sk.TurtleGraphics = {})).target = 'turtleCanvas';
   var myPromise = Sk.misceval.asyncToPromise(function() {
       return Sk.importMainWithBody("<stdin>", false, prog, true);
   });
   myPromise.then(function(mod) {
       console.log('success');
   },
       function(err) {
       console.log(err.toString());
   });
} 
</script>   
<textarea id="hiddenCode" style="display:none;"></textarea><br /> 

<div id="source">import turtle
myName = input("who r u?")
print(myName)
t = turtle.Turtle()
t.forward(100)</div>
<button type="button" onclick="runit()">Run</button> 
    <textarea id="programInputField">some input lines</textarea>
<pre id="console">output</pre>
<div id="turtleCanvas"></div>   
<script src="js/ace/src-noconflict/ace.js" type="text/javascript" charset="utf-8"></script>
<script>
    var window1 = ace.edit("source");
    var window2 = ace.edit("console");
    window1.setTheme("ace/theme/textmate");
    window2.setTheme("ace/theme/twilight");
    window1.getSession().setMode("ace/mode/python");
</script>
</body>

1 个答案:

答案 0 :(得分:0)

没关系!!!!这完美无缺,只需要更改我的文本区域的ID,否则我只是复制并粘贴它并注释掉我自己的sk.configure行.....辉煌,谢谢你无论你是谁!!!!!!! :D:D:D:D

Wait for an event to occur within a function in Javascript for Skulpt