我很高兴看到现在可以在浏览器中编写Python代码.这些是主要候选人(请添加我可能忽略的任何一个):
但如何在它们之间做出选择?我能看到的唯一明显区别是Skulpt基于Python 2,而Brython基于Python 3.
请注意:这不是建议或意见的要求.我正在寻找能够为受过教育的选择提供信息的客观事实.
我有一段用Python编写的代码.我想将该代码放在网页中.Brython似乎是将两个东西粘合在一起的最简单的方法,但是我没有可以在服务器端实际运行代码的服务器.
Brython是否需要服务器端代码,或者我可以廉价地使用它来托管一个页面(例如)Dropbox?
如何使用Brython将Python编译为Javascript?我想在我的计算机上执行此操作,因此我可以使用nodejs运行Javascript,例如.
$ python hello.py
Hello world
$ brython hello.py -o hello.js
$ node hello.js
Hello world
Run Code Online (Sandbox Code Playgroud)
Brython网站上的示例仅解释了如何在浏览器http://www.brython.info/index_en.html中执行此操作
我希望在 Brython 中导入我自己的库。文档的此页旨在展示如何通过将适当的目录添加到 python 路径,但我无法使其工作,因为我无法使 Brython import sys。
以下是 Brython 文档第一页中最简单的示例代码:
<html>
<head>
<script src="../src/Brython3.2.8/brython.js"></script>
</head>
<body onload="brython()">
<script type="text/python">
from browser import document, alert
def echo(ev):
alert(document["zone"].value)
document['mybutton'].bind('click', echo)
</script>
<input id="zone"><button id="mybutton">click !</button>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
效果很好。
但如果我尝试导入 sys:
<html>
<head>
<script src="../src/Brython3.2.8/brython.js"></script>
</head>
<body onload="brython()">
<script type="text/python">
import sys
from browser import document, alert
def echo(ev):
alert(document["zone"].value)
document['mybutton'].bind('click', echo)
</script>
<input id="zone"><button id="mybutton">click !</button>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
然后 html 将显示,但按钮不会执行任何操作。
Chrome 上的控制台显示以下错误:
brython.js:6929 XMLHttpRequest cannot load …
Run Code Online (Sandbox Code Playgroud) 我正在加载 Brython 和 iFlyChat,但如果取消注释 iFlyChat 脚本,Brython 将无法工作。我尝试了各种异步组合,但似乎有一些更基本的东西。
JSFiddle在这里和下面的代码:
https://jsfiddle.net/tutmoses/c09dhbrq/
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Title</title>
<!-- BRYTHON -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/brython/3.8.8/brython.js" integrity="sha256-rA89wPrTJJQFWJaZveKW8jpdmC3t5F9rRkPyBjz8G04=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/brython/3.8.8/brython_stdlib.js" integrity="sha256-Gnrw9tIjrsXcZSCh/wos5Jrpn0bNVNFJuNJI9d71TDs=" crossorigin="anonymous"></script>
<!-- IFLYCHAT
<script>
console.log("init iflychat plugin");
var iflychat_app_id="1c0d1abc-4864-4608-acb7-6cdbfab07ce2";
var iflychat_external_cdn_host="cdn.iflychat.com",iflychat_bundle=document.createElement("SCRIPT");iflychat_bundle.src="//"+iflychat_external_cdn_host+"/js/iflychat-v2.min.js?app_id="+iflychat_app_id,iflychat_bundle.async="async",document.body.appendChild(iflychat_bundle);var iflychat_popup=document.createElement("DIV");iflychat_popup.className="iflychat-popup",document.body.appendChild(iflychat_popup);
</script> -->
</head>
<body onload="brython()">
<div class="container">
<h2 id="hello"></h2>
<button id="alert-btn">Alert & Insert</button>
<input type="text" id="text" placeholder="Enter something">
<span id="output"></span>
</div>
<!-- Alert & DOM insert -->
<script type="text/python" id="script0">
from browser import document, console, alert
def show(e):
console.log(e) …
Run Code Online (Sandbox Code Playgroud) 我正在使用Flask编写Web应用程序,并希望在Brython中使用browser.ajax功能,但找不到可行的示例.如果有人演示如何在Brython中使用ajax,那将是非常好的.更具体地说,如何通过单击提交按钮将用户输入的数据传递到文本域中.任何帮助都非常感谢!
(我在发布上述问题几周后就写了这篇文章).我按照本教程关于如何在Flask中实现ajax(http://runnable.com/UiPhLHanceFYAAAP/how-to-perform-ajax-in-flask-for-python)并尝试用Brython替换jquery.ajax.不幸的是,我仍然无法让它发挥作用.这是我的代码:
烧瓶的部分:
@app.route('/')
def index():
return render_template('index.html')
@app.route('/_add_numbers')
def add_numbers():
a = request.args.get('a', 0, type=int)
b = request.args.get('b', 0, type=int)
return jsonify(result=a + b)
Run Code Online (Sandbox Code Playgroud)
Brython/HTML:
<body onload="brython()">
<script type="text/python">
from browser import document as doc
from browser import ajax
def on_complete(req):
if req.status==200 or req.status==0:
doc["txt_area"].html = req.text
else:
doc["txt_area"].html = "error "+req.text
def get(url):
req = ajax.ajax()
a = doc['A'].value
b = doc['B'].value
req.bind('complete',on_complete)
req.open('GET',url,True)
req.set_header('content-type','application/x-www-form-urlencoded')
req.send({"a": a, "b":b})
doc['calculate'].bind('click',lambda ev:get('/_add_numbers'))
</script>
<div class="container">
<div class="header"> …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Brython在浏览器中运行 Python 代码,并在该 Python 代码中使用 websockets。
我有工作的 JavaScript 代码,可以连接到位于http://www.websocket.org/echo.html的 Websocket echo 服务器。
根据文档,该函数JSObject
可用于操作 Brython 中的 JavaScript 对象,但我无法使用 或 使其ws = JSObject(WebSocket("ws://echo.websocket.org/"))
工作ws = JSObject(new WebSocket("ws://echo.websocket.org/"))
。
如何使用 Brython 在 Python 代码中制作一个连接到 echo 服务器的简单“Hello World”示例?
另请参阅如何使用 Brython 导入库以使用未内置于 Brython 的库(包括常用的 Python 标准库)。
晚安.这是一个关于Brython的问题,欢迎任何帮助.
我正在寻找一种方法,每个时间间隔(可能是200毫秒)将元素(例如,div)移动到左侧(或右侧,顶部等)一些像素.谁能帮我?
一旦他到达左边缘就删除元素会很棒.(:
[更新]这是一个起点.我不会用错误的brython代码来判断它,遵循你的创造力;)
<html><head>
<style>
* { margin: 0; padding: 0; outline: 0; border: 0; }
.block {
display: inline-block;
margin: 1em;
padding: 1em;
background: steelblue;
color: white;
font: 14pt/1.2 georgia,cambria;
border-radius: .2em;
}
</style></head><body>
<div class="block">
Test
</div>
</body></html>
Run Code Online (Sandbox Code Playgroud) 编辑:谷歌群组帖子
我正在和Brython一起玩。
我想弄清楚如何从 JavaScript 执行 Brython 代码。
http://www.brython.info/static_doc/en/jsobjects.html <--这看起来像相关的文档页面,但似乎缺少从 JavaScript 调用 Brython 函数的示例。
对于我的具体情况,我正在收听 MIDI 事件(使用https://github.com/cwilso/WebMIDIAPIShim)
我希望 Brython 代码响应接收到的 MIDI 事件而执行。
目前我正在尝试:
function myMIDIMessagehandler( event )
{
if( brythonListener != null )
brythonListener( event );
Run Code Online (Sandbox Code Playgroud)
和 Brython 代码:
<script type="text/python3">
from browser import document as doc, window, html
def foo(event):
print("BRYTHON!" + event);
window.brythonListener = foo
</script>
Run Code Online (Sandbox Code Playgroud)
但是当我在我的 MIDI 键盘上按下一个音符时,我得到:
我不知道如何处理这个错误,而且我完全不确定这种方法是否合理。
我想在 brython 中使用 numpy。但我不知道如何在 brython 中导入额外的模块。如果您有类似的经历或疑问,请告诉我解决方法
我正在创建简单的代码编辑器,它可以运行 python 代码并显示输出和错误消息。目前我可以运行 python 代码,但问题是输出显示在开发人员工具的控制台中。我想将输出和错误消息获取到 DOM 元素或作为字符串传递到 JS 脚本
<script type="text/python">
from browser import document, window
import tb as traceback
def run(event):
try:
exec(document['code'].value)
except Exception:
print(traceback.format_exc())
document['run'].bind('click',run)
</script>
Run Code Online (Sandbox Code Playgroud)
这是我的代码。'code' 是用于输入代码的文本框的 ID。'run' 是运行按钮的 id。我想将输出获取到另一个文本框或作为字符串获取到我的 js 脚本,而不是显示在开发人员工具的控制台中
brython ×13
python ×10
javascript ×7
html ×3
transcrypt ×2
ajax ×1
browser ×1
editor ×1
node.js ×1
python-3.x ×1
rapydscript ×1
sandbox ×1
skulpt ×1
websocket ×1