作者:Ckend

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

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

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

1. 特点

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

2. 运行速度接近于 CPyhon

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

如果 Python 和 JS 你都写过,那大概率会觉得相同的功能,用 Python 写起来比 JS 更方便。

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

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

2. 实验

0. 安装

与通常的 Python 库一样,可以通过 pip install brython 进行安装。

然后在一个空目录下执行:python -m brython --install1. 在页面上显示Hello !:

将这份代码保存为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")以上例子如下:

效果:

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

最后只需要做运算符的事件触发器即可,从下面这行代码: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 objectelement = event.target# The text printed on the button is the element's "text" attributevalue = element.textif value not in "=C":# update the result zoneif result.text in ["0", "error"]:result.text = valueelse:result.text = result.text + valueelif value == "C":# resetresult.text = "0"elif value == "=":# execute the formula in result zonetry:result.text = eval(result.text)except:result.text = "error"

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

如果是 C 号,则清空 result。

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

这边是全部核心代码了,写起来真的极其方便。

你可以访问如下地址体验这个 Python 写的计算器:

https://pythondict.com/calculator.html

完整源码:

https://pan.baidu.com/s/1d4ndpN1Lpzb6fpgqKJ7acQ

提取码:v36f

---------End---------顺便给大家推荐下我的微信视频号「价值前瞻」,主要分享读书、成长和投资思考,可以了解不一样的我,欢迎扫码关注。

python前端用什么写_Python 竟然也可以写网页前端了相关推荐

  1. python解释器可以使用什么命令_python解释器用什么写的

    python解释器是用什么语言实现的 用的是python解释器. 首先win+R 运行cmd,如果 python version不报错,则表明环境正确 python file.name运行即可我的故里 ...

  2. eclipse可以写前端吗_Python 竟然也可以写网页前端了!

    Python作为胶水语言,真的是无所不能.这不,最近又出现一个基于 Python3,目标是替代 JavaScript 的前端开发工具 -Brython 好用吗?咱今天来试试用它写一个计算器: 不过,我 ...

  3. python文件是怎么写_python头文件怎么写

    本文主要以python2为例.首先介绍一下Python头文件的编程风格,然后再给大家详细介绍import部分的基本用法.这两个部分就是Python中头文件的组成模块. 编程风格#!/usr/bin/e ...

  4. python代理ip怎么写_python代理ip怎么写

    python写代理ip的方法:首先创建代理ip对象,并定制一个opener对象:然后安装opener对象,以后的urlopen就一直使用这个代理地址. python写代理ip的方法: 方法1: 先创建 ...

  5. python程序代码是什么_python代码用什么写

    展开全部 对于新手而言,学了大概的语62616964757a686964616fe59b9ee7ad9431333433653336法,七七八八的历史.概念.知识,然而最直接的一个问题却无人解答:到底 ...

  6. python有头文件吗_python头文件怎么写

    1.python编辑时可以不要头文件吗 win下py代码,头文件是#-*-encoding:utf-8-*-,是告诉python解释器, 应该以utf-8编码来解释py文件, 对于python 2.6 ...

  7. python利用requests进行爬虫_Python利用Requests库写爬虫(一)

    基本Get请求: #-*- coding:utf-8 -*- import requests url = 'http://www.baidu.com' r = requests.get(url) pr ...

  8. python编程入门单例_python实现单例模式怎么写啊?

    这个网上有很多的,你可以搜一搜,单例设计模式很多面试官都会考的,最好是记住一两个,我下面写一个例子给你看一下 使用__new__方法 在__new__方法中把类实例绑定到类变量_instance上,如 ...

  9. python一般用什么软件写_python用什么软件写代码

    IDE没有统一的标准,自己习惯就是最好的.本文列出一些较常用的IDE,供大家参考. 一般而言,WingIDE.PyCharm.Spyder.Vim是比较常用的IDE. Spyder Spyder是Py ...

  10. python爬虫用什么软件写_python用什么软件写爬虫

    如果你正在学习编程,那么"爬虫"绝对是你不可忽视的.那么,学习python爬虫之前需要哪些工具? 代码编辑运行环境:(推荐学习:Python视频教程) 个人推荐PyCharm社区版 ...

最新文章

  1. CVPR2020:端到端学习三维点云的局部多视图描述符
  2. js正则验证特殊字符
  3. 如何混合编译C语言和C++
  4. rust大油田分解机_油田泥浆泵油田环保罐车配套泥浆泵
  5. java的面向对象的四大特征
  6. WLAN产品形态之分层架构
  7. 解决win7下nodejs安装运行报错:Node.js is only supported on Windows 8.1, Windows Server 2012 R2... 之不支持高版本问题
  8. 数据分析 数据科学_数据科学中的数据分析
  9. 太真实了!程序员之间的鄙视链...
  10. SQL Server 2005数据库快照
  11. redis的zset的底层实现_Redis底层数据结构之 zset
  12. bzoj 2844 子集异或和名次
  13. 针对Micro Framework 3.0模拟器进行改造方法(浅谈)
  14. iOS开发之cocoapods报错MacOSSierra10.13-bash: /usr/local/bin/pod: /System/Library/Frameworks/Ruby.framewor
  15. 14.http 304优化,了解客户端缓存
  16. 利用matlab实现卷积实验报告,matlab卷积实验报告(共8篇).doc
  17. 技术人员的价值是什么?技术的价值体现在赋能业务
  18. 华为mate40计算机,华为Mate40兼容欧米多手机电脑,秒变笔电轻办公
  19. evplayer android闪退,Evplayer优弊端汇总
  20. 关于wmsys.wm_concat() 多条记录合并,及可能出现的异常ORA-31061:XDB错误:special char to escaped char conversion failed

热门文章

  1. vfp程序设计和c语言6,VFP程序设计总结
  2. java md5加密源码_javaMD5加密源码
  3. spring boot 设置启动时初始化DispatcherServlet
  4. Zabbix运维监控工具
  5. 计算机考苏州公务员考试,苏州公务员考试难度
  6. argis怎么关掉对象捕捉_ArcGIS ArcMap编辑捕捉教程
  7. Java菜鸟教程 递归算法与Scanner类
  8. acrobat缺少字体 adobe_PDF 字体
  9. 淘淘商城第1讲——你给介绍介绍,什么叫淘淘商城?
  10. PHP里面用ichartjs,ichartjs插件的使用