了不起的Chrome浏览器:Chrome 89开启Web应用的物联网时代
WEB前端开发社区 昨天
input()
或者scanf()
,输出使用print
之类的函数进行交互。相信每个人对这种方式都非常的熟悉。Web应用需要编写额外的前端代码来实现界面。 由于Http协议的无状态性,Web应用需要在各个后端接口之间转递状态(比如通过session机制或前端的 <input type="hidden">
机制)。Web应用在单次HTTP请求中,无法实现实时输出,所以一些耗时操作通常需要离线完成,而前端需要定时轮询来实现“伪实时”。
安装
pip3 install -U pywebio
Hello, world
from pywebio.input import input, FLOATfrom pywebio.output import put_text
def bmi(height, weight): # 计算BMI bmi_value = weight / (height / 100) ** 2
top_status = [(14.9, '极瘦'), (18.4, '偏瘦'), (22.9, '正常'), (27.5, '过重'), (40.0, '肥胖'), (float('inf'), '非常肥胖')]
for top, status in top_status: if bmi_value <= top: return bmi_value, status
def main(): height = input("请输入你的身高(cm):", type=FLOAT) weight = input("请输入你的体重(kg):", type=FLOAT)
bmi_value, status = bmi(height, weight)
put_text('你的 BMI 值: %.1f,身体状态:%s' % (bmi_value, status))
if __name__ == '__main__': main()
bmi()
的直接调用改为使用 pywebio.start_server(bmi, port=80)
便可以在80端口提供 bmi()
服务( 在线Demo )。另外,如果你已经有一个正在运行的Web应用,PyWebIO同样支持将编写的BMI应用整合到你的Web应用中。基本使用
from pywebio.input import *
# 文本输入input("What's your name?")
# 下拉选择select('Select', ['A', 'B'])
# 多选checkbox("Checkbox", options=['Check me'])
# 单选radio("Radio", options=['A', 'B', 'C'])
# 多行文本输入textarea('Text', placeholder='Some text')
# 文件上传file_upload("Select a file:")
# 代码编辑textarea('Code Edit', code={ 'mode': "python", 'theme': 'darcula',}, value='import ...')
# 输入组input_group("Basic info", [ input('Name', name='name'), input('Age', name='age'),])
# 输入校验def check(p): if p != 2: return 'Wrong!'input("1+1=?", type=NUMBER, validate=check)
from pywebio.output import *
# 输出文本put_text("Hello world!");
# 输出表格put_table([ ['Product', 'Price'], ['Apple', '$5.5'], ['Banner', '$7'],]);
# 输出图像put_image(open('python-logo.png', 'rb').read());
# 输出MarkDownput_markdown('**Bold text**');
# 输出通知消息toast('Awesome PyWebIO!!');
# 输出文件put_file('hello_word.txt', b'hello word!');
# 输出Htmlput_html('E = mc<sup>2</sup>');
# 显示弹窗with popup('Popup title'): put_text("Hello world!") put_table([ ['Product', 'Price'], ['Apple', '$5.5'], ['Banner', '$7'], ])
# 输出可以点击的按钮def on_click(btn): put_markdown("You click `%s` button" % btn)
put_buttons(['A', 'B', 'C'], onclick=on_click);
# 使用行布局put_row([put_code('A'), None, put_code('B')]);
# 输出进度条import timeput_processbar('bar1');for i in range(1, 11): set_processbar('bar1', i / 10) # 更新进度条 time.sleep(0.1)
声明:
本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。
赞 (0)