激情六月丁香婷婷|亚洲色图AV二区|丝袜AV日韩AV|久草视频在线分类|伊人九九精品视频|国产精品一级电影|久草视频在线99|在线看的av网址|伊人99精品无码|午夜无码视频在线

Python簡單實用web界面,pywebio常見的3種交互套路

發(fā)布時間:2024-01-18 16:37:52 瀏覽量:437次

界面的制作一直是 Python 的痛!使用 Python 制作桌面端界面是非常痛苦的過程(又難學又難看)。不過,Python 已經(jīng)出現(xiàn)了幾個基于web前端的庫,他們的基本機制大同小異,如果對 界面操作性沒有太大要求,那么這些庫就比較適合你 。

這個系列基于 pywebio 的一系列實戰(zhàn)應用,讓我們從實戰(zhàn)中學習這個庫的使用!

如果對你有幫助,記得轉(zhuǎn)發(fā)推薦給你的好友!

你的點贊、收藏是對我的最大鼓勵!

本節(jié)源碼回復"pywebio"即可獲取

本文是對多種交互界面的套路,以及 pywebio 中對應解決方式的講解。是本系列后續(xù)實戰(zhàn)案例的關(guān)鍵,如果希望盡快上手 pywebio 或 streamlit 這些庫,請務必好好理解

上一節(jié):

Python終于可以簡單做個漂亮界面!pywebio做一個數(shù)據(jù)查詢器

安裝庫:

pip install -U pywebio

界面交互的方式

最常見的界面是只顯示,而用戶不能交互。

這其實與普通使用 print 輸出信息到控制臺一樣:

如果把控制臺換成瀏覽器上的頁面,那就是 pywebio 中的各種輸出方法:


一問一答

其實,python 控制臺也有一種交互方式—— input:

  • 這里的重點是,input 這句代碼會停住,直到用戶按下回車。
  • 編程上這叫"阻塞",代碼執(zhí)行就像流水,從上而下執(zhí)行,"阻塞"使得水流停住,不再往下走

對應在 pywebio 中的就是各種輸入方法—— input 模塊:

  • 這是一個讓用戶輸入2個數(shù)字,然后把求和結(jié)果顯示出來的界面
  • 注意,一旦用戶確定輸入成功,輸入框就會消失

重點:

  • 這種流程就像不斷向用戶提問,界面上的內(nèi)容必須等用戶回答后,才會繼續(xù)顯示,我稱為"一問一答"
  • 一旦整個頁面的內(nèi)容都輸出完畢,也就是上面的函數(shù)執(zhí)行完畢。此時函數(shù)中的所有數(shù)據(jù)都不復存在
  • 如果要重來一次,只能瀏覽器刷新頁面,此時上面的函數(shù)又被重新調(diào)用
  • 這是 pywebio 推薦使用的流程。

作用域修復

"一問一答" 模式中有一個重要的問題, 輸出的內(nèi)容無法改變

這種模式無法實現(xiàn)如下效果:

  • 第一次讓用戶輸入之前,就顯示一個表格
  • 每次輸入后,表格都會立即更新

pywebio 為此提供了"作用域"的概念:

  • 作用域 概念很簡單,你可以用一個名字定義頁面上某個區(qū)域
  • 后面你可以隨時修改指定區(qū)域的輸出內(nèi)容(增加、刪除等都可以)
  • 行8:定義一個叫 "msg" 的區(qū)域,這個區(qū)域里面輸出一個表格
  • 行14:用戶輸入第一個數(shù)字后,可以更新 msg 區(qū)域,使用 參數(shù) clear=True ,去掉原來的內(nèi)容,然后重新生成一個新表格

此時,把更新操作放入一個函數(shù),代碼就能簡化:

import pywebio
import pywebio.output as output
import pywebio.input as input

def main():
    output.put_markdown('# 數(shù)字求和示例')

    def show_table(num1='',num2='',ret=''):
        with output.use_scope('msg',clear=True):
            output.put_table([
                ['數(shù)字1','數(shù)字2','結(jié)果'],
                [num1,num2,ret]
            ])
    
    show_table()

    ip1 = input.input('輸入第一個數(shù)字',type=input.NUMBER)
    show_table(ip1)

    ip2 = input.input('輸入第二個數(shù)字',type=input.NUMBER)
    show_table(ip1,ip2,ip1 + ip2)

重點:

  • 作用域 的作用是讓已經(jīng)輸出的內(nèi)容,在后續(xù)用戶交互中得到持續(xù)更新
  • 通常用在大面積的內(nèi)容持續(xù)更新

"占位符"輸出

前面的例子使用作用域其實有點小題大做,畢竟用戶每次輸入后只需要更新表格中的一個格子。

pywebio 為此提供了"占位符"的概念:

  • 行8-10:定義占位符
  • 行12:輸出表格,把占位符放入表格
  • 行18:把輸入的內(nèi)容設置到指定的占位符中,此時表格中的占位符就能刷新

重點:

  • 占位符的目的是讓已經(jīng)輸出的內(nèi)容的某些部分,在后續(xù)用戶交互中得到更新
  • 通常被用在輸出控件的一個小區(qū)域,比如表格的某個格子

本節(jié)重點介紹 pywebio 關(guān)于"一問一答" 的內(nèi)容持續(xù)更新知識點:

  1. 輸入方法是用戶交互的唯一途徑
  2. 輸入方法是阻塞
  3. 一旦用戶成功輸入,輸入控件會消失

某些需求下,點2,點3是一種缺點,當然 pywebio 也有對應的解決方式。

下一節(jié)會講解剩余兩種界面交互方式以及 pywebio 中的應對套路


推薦閱讀:

熱門課程推薦

熱門資訊

請綁定手機號

x

同學您好!

您已成功報名0元試學活動,老師會在第一時間與您取得聯(lián)系,請保持電話暢通!
確定