社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

Python编程时光 • 3 年前 • 489 次点击  

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

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


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

1.特点

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

2.运行速度接近于CPyhon

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

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

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

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

2.实验

1.在页面上显示 Hello !:


<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控制页面。

而在之间就是相应的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")


以上例子如下:


<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就可以把这个简单的图形架构变漂亮了:


*{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;}


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


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



Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/71254
 
489 次点击