日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
開發(fā)交互式Web應(yīng)用,從未如此簡(jiǎn)單

今天分享一個(gè)讓開發(fā)交互式 Web app 超級(jí)簡(jiǎn)單的工具。不會(huì) HTML,CSS,JAVASCRIPT 也沒事。

創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、茂名網(wǎng)絡(luò)推廣、微信小程序開發(fā)、茂名網(wǎng)絡(luò)營(yíng)銷、茂名企業(yè)策劃、茂名品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供茂名建站搭建服務(wù),24小時(shí)服務(wù)熱線:13518219792,官方網(wǎng)址:www.cdcxhl.com

交互式 Web app 非常實(shí)用,比如說(shuō)做一個(gè)問(wèn)卷調(diào)查頁(yè)面、一個(gè)投票系統(tǒng)、一個(gè)信息收集表單,上傳文件等等,因?yàn)榫W(wǎng)頁(yè)是可視化的,因此還可以作為一個(gè)沒有服務(wù)端的圖片界面應(yīng)用程序而使用。

如果你有這樣的開發(fā)需求,那用 Python 真的是太簡(jiǎn)單了。

借助于 PyWebIO(pip install pywebio),你可以分分鐘實(shí)現(xiàn)網(wǎng)頁(yè)的信息錄入,可以看下面的動(dòng)圖:

上面的頁(yè)面,也就僅僅用了這 6 行代碼:

 
 
 
 
  1. from pywebio.input import * 
  2.  
  3. input("This is a simple text input") 
  4. select("This is a drop down menu", ['Option1', 'Option2']) 
  5. checkbox("Multiple Choices!", options=["a",'b','c','d']) 
  6. radio("Select any one", options=['1', '2', '3']) 
  7. textarea('Text Area', rows=3, placeholder='Multiple line text input') 

要讓網(wǎng)頁(yè)輸出想要的信息也是非常簡(jiǎn)單,代碼如下,函數(shù)功能已經(jīng)做了相關(guān)注釋,你很容易看懂:

 
 
 
 
  1. from pywebio.output import * 
  2. from pywebio import session 
  3.  
  4. # 網(wǎng)頁(yè)上顯示純文本 
  5. put_text("Hello friend!") 
  6.  
  7. # 網(wǎng)頁(yè)上顯示表格 
  8. put_table([ 
  9.     ['Object', 'Unit'], 
  10.     ['A', '55'], 
  11.     ['B', '73'], 
  12. ]) 
  13.  
  14. # 網(wǎng)頁(yè)上顯示 MarkDown 
  15. put_markdown('~~PyWebIO~~') 
  16.  
  17. # 網(wǎng)頁(yè)上顯示下載文件的鏈接 
  18. put_file('output_file.txt', b'You can put anything here') 
  19.  
  20. # 網(wǎng)頁(yè)上顯示圖片 
  21. put_image(open('python_logo.png', 'rb').read()) 
  22.  
  23. # 網(wǎng)頁(yè)上顯示彈窗 
  24. popup('popup title', 'popup text content') 
  25.  
  26. # 保持回話是打開狀態(tài),否則頁(yè)面顯示完畢程序退出 
  27. session.hold() 

運(yùn)行的效果如下:

以上,幾行代碼就實(shí)現(xiàn)了一個(gè)帶有輸入輸出的 Web 應(yīng)用,是不是很神奇?

構(gòu)建基于瀏覽器的 GUI 程序

PyWebIO 提供了一系列命令式的交互函數(shù)來(lái)在瀏覽器上獲取用戶輸入和進(jìn)行輸出,將瀏覽器變成了一個(gè)“富文本終端”,可以用于構(gòu)建簡(jiǎn)單的 Web 應(yīng)用或基于瀏覽器的 GUI 應(yīng)用。

比如計(jì)算 BMI 指數(shù)的腳本:

 
 
 
 
  1. from pywebio import start_server 
  2. from pywebio.input import input, FLOAT 
  3. from pywebio.output import put_text 
  4.  
  5. def bmi(): 
  6.     height = input("請(qǐng)輸入你的身高(cm):", type=FLOAT) 
  7.     weight = input("請(qǐng)輸入你的體重(kg):", type=FLOAT) 
  8.  
  9.     BMI = weight / (height / 100) ** 2 
  10.  
  11.     top_status = [(14.9, '極瘦'), (18.4, '偏瘦'), 
  12.                   (22.9, '正常'), (27.5, '過(guò)重'), 
  13.                   (40.0, '肥胖'), (float('inf'), '非常肥胖')] 
  14.  
  15.     for top, status in top_status: 
  16.         if BMI <= top: 
  17.             put_text('你的 BMI 值: %.1f,身體狀態(tài):%s' % (BMI, status)) 
  18.             break 
  19.  
  20. if __name__ == '__main__': 
  21.     start_server(bmi, port=80) 

效果:

更多示例:

基本 demo

  • 聊天室[1]: 和當(dāng)前所有在線的人聊天 (不到 90 行代碼實(shí)現(xiàn))
  • Markdown 實(shí)時(shí)預(yù)覽[2]: 可以實(shí)時(shí)預(yù)覽的在線 Markdown 編輯器 (不到 40 行代碼實(shí)現(xiàn))
  • 在線五子棋游戲[3]: 多人協(xié)作對(duì)戰(zhàn)的五子棋游戲 (不到 100 行代碼實(shí)現(xiàn))
  • 輸入演示[4]: 演示 PyWebIO 輸入模塊的用法
  • 輸出演示[5]: 演示 PyWebIO 輸出模塊的用法

數(shù)據(jù)可視化 demo

PyWebIO 還支持使用第三方庫(kù)進(jìn)行數(shù)據(jù)可視化

  • 使用 bokeh 進(jìn)行數(shù)據(jù)可視化[6]
  • 使用 plotly 進(jìn)行數(shù)據(jù)可視化[7]
  • 使用 pyecharts 創(chuàng)建基于 Echarts 的圖表[8]
  • 使用 pyg2plot 創(chuàng)建基于 G2Plot 的圖表[9]
  • 使用 cutecharts.py 創(chuàng)建卡通風(fēng)格圖表[10]

數(shù)據(jù)可視化效果圖:

與現(xiàn)有框架集成

PyWebIO 還可以方便地整合進(jìn)現(xiàn)有的 Web 服務(wù),讓你不需要編寫 HTML 和 JS 代碼,就可以構(gòu)建出具有良好可用性的應(yīng)用。目前支持與 Flask、Django、Tornado、aiohttp、FastAPI 框架集成。

比如說(shuō)與 Tornado 應(yīng)用整合:

 
 
 
 
  1. import tornado.ioloop 
  2. import tornado.web 
  3. from pywebio.platform.tornado import webio_handler 
  4.  
  5. class MainHandler(tornado.web.RequestHandler): 
  6.     def get(self): 
  7.         self.write("Hello, world") 
  8.  
  9. if __name__ == "__main__": 
  10.     application = tornado.web.Application([ 
  11.         (r"/", MainHandler), 
  12.         (r"/bmi", webio_handler(bmi)),  # bmi 即為上文計(jì)算BMI指數(shù)的函數(shù) 
  13.     ]) 
  14.     application.listen(port=80, address='localhost') 
  15.     tornado.ioloop.IOLoop.current().start() 

與 Django 整合:

 
 
 
 
  1. # urls.py 
  2.  
  3. from django.urls import path 
  4. from pywebio.platform.django import webio_view 
  5.  
  6. # `task_func` is PyWebIO task function 
  7. webio_view_func = webio_view(task_func) 
  8.  
  9. urlpatterns = [ 
  10.     path(r"tool", webio_view_func), 

與更多框架的整合見文檔[11]

最后

PyWebIO 使用同步而不是基于回調(diào)的方式獲取輸入,代碼編寫邏輯更自然,非聲明式布局,布局方式簡(jiǎn)單高效,代碼侵入性小,舊腳本代碼僅需修改輸入輸出邏輯便可改造為 Web 服務(wù),還可以整合到現(xiàn)有的主流 Web 框架。同時(shí)支持基于線程的執(zhí)行模型和基于協(xié)程的執(zhí)行模型,支持結(jié)合第三方庫(kù)實(shí)現(xiàn)數(shù)據(jù)可視化,更多知識(shí)請(qǐng)閱讀官方文檔[12]

一句話,PyWebIO 讓交互式的 Web 開發(fā)變得更加簡(jiǎn)單,特別適合開發(fā)簡(jiǎn)單的 GUI 程序及數(shù)據(jù)可視化。

本文轉(zhuǎn)載自微信公眾號(hào)「Python七號(hào)」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系Python七號(hào)公眾號(hào)。


新聞標(biāo)題:開發(fā)交互式Web應(yīng)用,從未如此簡(jiǎn)單
文章鏈接:http://www.dlmjj.cn/article/djpjieo.html