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

高校合作1:010-59833514 ?咨詢電話:400-810-1418 服務(wù)與監(jiān)督電話:400-810-1418轉(zhuǎn)接2

Python簡(jiǎn)單實(shí)用web界面,pywebio常見的3種交互套路

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

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

這個(gè)系列基于 pywebio 的一系列實(shí)戰(zhàn)應(yīng)用,讓我們從實(shí)戰(zhàn)中學(xué)習(xí)這個(gè)庫(kù)的使用!

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

你的點(diǎn)贊、收藏是對(duì)我的最大鼓勵(lì)!

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

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

上一節(jié):

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

安裝庫(kù):

pip install -U pywebio

界面交互的方式

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

這其實(shí)與普通使用 print 輸出信息到控制臺(tái)一樣:

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


一問一答

其實(shí),python 控制臺(tái)也有一種交互方式—— input:

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

對(duì)應(yīng)在 pywebio 中的就是各種輸入方法—— input 模塊:

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

重點(diǎn):

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

作用域修復(fù)

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

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

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

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

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

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

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('輸入第一個(gè)數(shù)字',type=input.NUMBER)
    show_table(ip1)

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

重點(diǎn):

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

"占位符"輸出

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

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

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

重點(diǎn):

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

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

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

某些需求下,點(diǎn)2,點(diǎn)3是一種缺點(diǎn),當(dāng)然 pywebio 也有對(duì)應(yīng)的解決方式。

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


推薦閱讀:

熱門課程推薦

熱門資訊

請(qǐng)綁定手機(jī)號(hào)

x

同學(xué)您好!

您已成功報(bào)名0元試學(xué)活動(dòng),老師會(huì)在第一時(shí)間與您取得聯(lián)系,請(qǐng)保持電話暢通!
確定