利用Python編寫個有趣的記仇本
最近背著老婆買了一個switch卡帶,這貨居然給丈母娘講,害得我被丈母娘說還小了,不買奶粉買游戲,太氣人了,我連夜用python寫了個《記仇本》,畫個圈圈把她記下來。
本片文章,主要關注于python
代碼,而html
和css
將暫時被忽略。
記仇本展示
如題所述,項目已經(jīng)寫好了,是基于local_storage
存儲在本地的項目
該項目運行時是基于brython
, 你可能想問,為什么不使用原生python
來編寫網(wǎng)頁呢,這個有個誤區(qū)是,網(wǎng)頁是由html
代碼編寫的,而原生python
想要操作DOM
非常難,所以brython
正是為這個來操作的。
初始打開頁面,因為沒有數(shù)據(jù)展示,所以只有一個增加按鈕。
當我們點擊【畫個圈圈記下來】按鈕后,會刷新為新增頁面,例如:
此時,我們只需要輸入信息,比如 記老婆的仇,緣由為 買switch游戲透露給丈母娘,還得被罵。
此時點擊記仇,就可以存儲到頁面上了。
此時若點擊已原諒,則可以刪除該記錄。
brython 之 local_storage
你可能細心發(fā)現(xiàn)了,哎,關掉了瀏覽器,下次打開,怎么還會有記錄在上面呢,這是因為用了local_storage
,那么,什么是local_storage
呢?
哎,我們使用的是brython
中的local_storage
但是,它可不是python
定義的哦,而是HTML 5
提供的存儲數(shù)據(jù)的API之一,可以在瀏覽器中保持鍵值對數(shù)據(jù)塊。
現(xiàn)在來展示使用一下brython
存儲和刪除的操作。
導入庫:
from browser.local_storage import storage
存儲數(shù)據(jù),例如鍵值信息juejinName
存儲為pdudo
storage[juejinName] = "pdudo"
查詢的話,直接使用storage[變量]
就好,若為空,則返回None
v = storage[juejinName]
循環(huán)所有的key
,需要引入window
庫,再使用for...in
來完成
from browser import window for key in window.localStorage: print(key)
也可以直接使用for...in
來遍歷storage
而刪除數(shù)據(jù)呢?只需要像刪除字典一下
del storage[juejinName]
storage
是不是操作起來和字典非常類似呢?減少了開發(fā)者的學習成本。
制作項目
有了上述前置條件后,我們再看該項目,便可以總結為 針對localStorage
的增刪查,首先當頁面加載出來的時候,我們需要先遍歷一下localstorage
數(shù)據(jù),從而映射為一個table
,例如:
for key in window.localStorage: tr = html.TR() datas = json.loads(storage[key]) delBtn = html.BUTTON("已原諒") delBtn.dataset["id"] = datas["id"] delBtn.className = "confirm-btn" delBtn.bind("click",delGrudges) td = html.TD(delBtn+" "+time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(int(datas["id"])))) tr <= td for tdVal in datas["whos"],datas["Text"]: td = html.TD(tdVal) tr <= td tb <= tr userWindows <= tb
上述代碼是遍歷localStorage
,而后在定義刪除按鈕,等將其他值組合完畢后,全部加載進table
中,而后再頁面上顯示。
而添加數(shù)據(jù)呢?
def saveGrudges(ev): getWhoVal = document["whos"].value getTextVal = document["textArea"].value if getWhoVal == "" or getTextVal == "": return document["saveBtn"].unbind("click") ids = int(time.time()) datas = { "id": ids, "whos": getWhoVal, "Text": getTextVal } storage[str(ids)] = json.dumps(datas)
上述代碼,顯示獲取input
和textarea
框中的值,再判斷是否用戶沒有輸入,我們將數(shù)據(jù)組裝為一個字典,而后轉(zhuǎn)換為字符串,再存入localstage
中。
還有其他操作,這個可以直接看代碼說明,brython
很簡單的。
總結
這篇文章,是善用localStorage
來作為鍵值對存儲,以此來保證打開和關閉瀏覽器,不會對數(shù)據(jù)產(chǎn)生影響,整個項目就是圍繞這個localStorage
增刪改查來操作的。
到此這篇關于利用Python編寫個有趣的記仇本的文章就介紹到這了,更多相關Python記仇本內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python Requests.post()請求失敗時的retry設置方式
這篇文章主要介紹了Python Requests.post()請求失敗時的retry設置方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08numpy數(shù)組做圖片拼接的實現(xiàn)(concatenate、vstack、hstack)
這篇文章主要介紹了numpy數(shù)組做圖片拼接的實現(xiàn)(concatenate、vstack、hstack),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-11-11Python?實現(xiàn)循環(huán)最快方式(for、while?等速度對比)
這篇文章主要介紹了Python?利用for、while?實現(xiàn)循環(huán)最快方式,文章主要對for、while?等速度對比詳細介紹,具有一定的參考價值?,需要的小伙伴可以參考一下2022-01-01