一个极具意义的 Python 前端开发工具

2020-07-10 19:05 Python编程时光

Python作为胶水语言,真的是无所不能。这不,最近又出现一个基于Python3,目标是替代JavaScript的前端开发工具—Brython.

好用吗?咱今天来试试用它写一个计算器有多简单:


不过,我们首先要知道它作为Python的客户端Web编程工具,和JS有什么区别呢?

1.特点

1.可轻易地在页面中内嵌Python终端进行测试

2.运行速度接近于CPyhon

3.写法方便,社区强大,可进行敏捷开发

我个人觉得相同的功能,用Python写起来可能会比JS快。

4.和JS一样,你不用安装任何东西就可以开始编写

下面就用Brython做一些简单的实验吧。

2.实验

1.在页面上显示 Hello !:


<!doctype html><html><head><meta charset="utf-8"><script type="text/javascript"src="https://cdn.jsdelivr.net/npm/brython@3.8.9/brython.min.js"></script></head><body onload="brython()"><script type="text/python">from browser import documentdocument <= "Hello !"</script></body></html>



将这份代码保存为index.html,双击在浏览器中打开,即可看到Hello !字样:

原理:

代码的head中,引入了一个Brython引擎附带的 brython.min.js 模块,用于使用Python控制页面。

而在<script type="text/python"> 和</script>之间就是相应的Python代码。

可以看到,需要在document中显示文本,直接输入:

document <= "你所需要显示的文本"

即可,后续你将会看到用Brython使用标准化的DOM语法和页面交互的例子。

2.用HTML标签来做文本格式化:

如加粗文本:


from browser import document, htmldocument <= html.B("Hello !")


部分加粗、部分不加粗:


from browser import document, htmldocument <= html.B("Hello, ") + "world !"


i 标签:


document <= html.UL(html.LI(i) for i in range(5))


超链接:


document <= html.A("Python实用宝典", href="https://pythondict.com")


以上例子如下:


<!doctype html><html><head><meta charset="utf-8"><script type="text/javascript"src="https://cdn.jsdelivr.net/npm/brython@3.8.9/brython.min.js"></script></head><body onload="brython()"><script type="text/python">from browser import document, htmldocument <= html.B("Hello !")document <= html.UL(html.LI(i) for i in range(5))document <= html.A("Python实用宝典", href="https://pythondict.com")</script></body></html>


效果:

3.写一个简单的计算器

先写好简单的图形架构,用th和tr标签即可:


from browser import document, htmlcalc = html.TABLE()calc <= html.TR(html.TH(html.DIV("0", id="result"), colspan=3) +                html.TH("C", id="clear"))lines = ["789/",        "456*",        "123-",        "0.=+"]calc <= (html.TR(html.TD(x) for x in line) for line in lines)document <= calc


图片版代码:


然后加上一些css就可以把这个简单的图形架构变漂亮了:


<style>*{font-family: sans-serif;font-weight: normal;font-size: 1.1em;}td{background-color: #ccc;padding: 10px 30px 10px 30px;border-radius: 0.2em;text-align: center;cursor: default;}#result{border-color: #000;border-width: 1px;border-style: solid;padding: 10px 30px 10px 30px;text-align: right;}</style>


最后只需要做运算符的事件触发器即可,从下面这行代码:


calc <= (html.TR(html.TD(x) for x in line) for line in lines)


可以看出,所有的按钮都被创建为td标签,因此我们要获得所有这些按钮是否被点击,仅需要:


for button in document.select("td"):    button.bind("click", action)


意思是,按钮被点击后便执行 action 操作,action操作定义如下:


def action(event):    """Handles the "click" event on a button of the calculator."""    # The element the user clicked on is the attribute "target" of the    # event object    element = event.target    # The text printed on the button is the element's "text" attribute    value = element.text        if value not in "=C":        # update the result zone        if result.text in ["0""error"]:            result.text = value        else:            result.text = result.text + value                elif value == "C":        # reset        result.text = "0"            elif value == "=":        # execute the formula in result zone        try:            result.text = eval(result.text)        except:            result.text = "error"


图片版代码:

如果不是=号或C号,则进行字符串拼接

如果是C号,则清空result。

如果是=号,则需要计算出结果,直接对字符串用eval()函数即可完成目的。

以上就是全部核心代码的讲解了。

如果你想体验一下,可以在我的公众号后台回复关键字【0710】获取代码文件。







推荐阅读


太赞了!《Python 黑魔法指南》终于面世了

一款让Python开发效率提升50%的工具包

微软推出Pylance,改善VS Code中的Python 体验

用 Python 预测了今年高考分数和录取情况

一文看透 Python 3.9 的新特性

一个靠GitHub打赏谋生的码农,年入十万美元

使用 Python 转换 PDF,看这一篇总结就够了。



长按下图  ➡   关注博主

(按左边关注 Python, 按右边关注 Goalng



本文章转载自公众号:Cool-Python

首页 - Python 相关的更多文章: