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 会一直卡住,直到界面上点击 "提交" 按钮
- 按照上面的流程,这个函数将会执行完毕。如果希望重新执行一次,只需要刷新一下浏览器的页面