PyWebIO网页应用

from pywebio.input import input, FLOAT
from 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()
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());

# 输出MarkDown
put_markdown('**Bold text**');

# 输出通知消息
toast('Awesome PyWebIO!!');

# 输出文件
put_file('hello_word.txt', b'hello word!');

# 输出Html
put_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 time
put_processbar('bar1');
for i in range(1, 11):
    set_processbar('bar1', i / 10)  # 更新进度条
    time.sleep(0.1)
import pywebio
import pywebio.output as output
import pywebio.input as input
import pandas as pd

def main():
    output.put_markdown('# 表格显示程序')
    output.put_markdown('功能如下:')
    output.put_markdown("""
- 选择文件
- 自动加载输出表格一部分内容
    """)

    file = input.file_upload('选择一个excel文件','.xlsx')
    df = pd.read_excel(file['content'])
    output.put_html(df.head(10).to_html())
import pywebio
import pywebio.output as output
import pywebio.input as input
import pandas as pd

def main():
    output.put_markdown('# 表格显示程序')
    output.put_markdown('功能如下:')
    output.put_markdown("""
- 选择文件
- 自动加载输出表格一部分内容
    """)

    file = input.file_upload('选择一个excel文件','.xlsx')
    df = pd.read_excel(file['content'])
    output.put_html(df.head(10).to_html())
  • 所有的input操作代码,都会等待界面操作完毕才会往下执行。例如行14 file_upload 会一直卡住,直到界面上点击 "提交" 按钮
  • 按照上面的流程,这个函数将会执行完毕。如果希望重新执行一次,只需要刷新一下浏览器的页面
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值