再見HTML ! 用純Python就能寫一個(gè)漂亮的網(wǎng)頁
大家好,今天給大家?guī)硪粋€(gè)炫酷的神器!
我們?cè)趯懸粋€(gè)網(wǎng)站或者一個(gè)網(wǎng)頁界面的時(shí)候,需要學(xué)習(xí)很多東西,對(duì)小白來說很困難!比如我要做一個(gè)簡(jiǎn)單的網(wǎng)頁交互:
- 要懂后端,比如Python里面的Django或者Flask,或者是Java里面的SpringBoot
- 要懂前端,現(xiàn)在都叫大前端了(因?yàn)楹軓?fù)雜),比如前端的框架Vue/React, 然后頁面的美化框架Bootstrap ,還有html ,csss 和Javascript 三駕馬車.
天啊,聽聽頭都大呢!其實(shí)我就給老板做一個(gè)簡(jiǎn)單的交互的頁面,而且我只會(huì)Python ,有沒有很簡(jiǎn)單的辦法可以做到呢。
在Github上逛的時(shí)候,找到一個(gè)非??岬纳衿鳎纸衦emi ,目前收獲了2300個(gè)贊。
star并不是很多,但是這個(gè)庫(kù)可是選入2018年的十大明星庫(kù),號(hào)稱是一個(gè)獨(dú)立的GUI庫(kù),而且最牛逼的就是這個(gè)庫(kù)竟然小于 100K,是否很神奇呢,我們一起來體驗(yàn)看一下特性:
- 跟其他GUI庫(kù)區(qū)別? Kivy,PyQT和PyGObject都需要主機(jī)操作系統(tǒng)的本機(jī)代碼,這意味著安裝或編譯大型依賴項(xiàng)。Remi只需要一個(gè)Web瀏覽器即可顯示您的GUI。
- 我需要懂HTML嗎? 不,只需要使用Python進(jìn)行編碼。
- 它是開源的嗎? 當(dāng)然!Remi是根據(jù)Apache許可發(fā)布的。開源,免費(fèi)!
- 我需要某種網(wǎng)絡(luò)服務(wù)器嗎? 不,自帶網(wǎng)絡(luò)服務(wù)器。
1. 安裝
如何安裝呢,因?yàn)槭荘ython 庫(kù),直接用pip 即可
- pip install remi
如果是沒有網(wǎng)絡(luò)的,或者服務(wù)器跟外網(wǎng)不通的,可以離線安裝。下載這個(gè)包,然后用install 安裝
- python setup.py install
2 .快速體驗(yàn)
我們來快速看一下,這個(gè)簡(jiǎn)單的Hello world網(wǎng)頁。
這里面包含了一個(gè) 2個(gè)元素:
- 文本Hello world ;
- 一個(gè)Press me的按鈕;
點(diǎn)擊這個(gè)按鈕還會(huì)改變Hello world的文本內(nèi)容,看點(diǎn)一下就變成了Button pressed.
上面這個(gè)簡(jiǎn)單的效果,其實(shí)只用了20來行Python代碼,都是原生的Python代碼,沒有用一行HTML .
我們來看一下源碼:
整個(gè)的代碼的結(jié)構(gòu)層次還很清晰的:
- 首先聲明一個(gè)MyApp類,這個(gè)類會(huì)繼承母框架App里面的功能,可以認(rèn)為是一個(gè)網(wǎng)頁畫布;
- 然后在這個(gè)畫布里面有3個(gè)函數(shù):
init主要是做類的初始化工作;
main主要對(duì)這個(gè)畫布布局進(jìn)行設(shè)計(jì),包含一個(gè)文本和一個(gè)按鈕。
on_button_pressed主要是控件的相應(yīng),點(diǎn)擊觸發(fā)函數(shù)
- 最后是start來啟動(dòng)這個(gè)類,就會(huì)生成一個(gè)本地的網(wǎng)站鏈接
3 .更多復(fù)雜的網(wǎng)頁元素
看完上面的設(shè)計(jì)是不是就覺得跟Python里面大名鼎鼎的tk庫(kù)很相似啊,上面的只是開胃菜,這個(gè)remi還能提供更復(fù)雜的gui界面元素。
上面的是一個(gè)完整的demo頁面,基本上常見的控件元素的都包含了,比如有菜單欄,文本,按鈕,單選框,進(jìn)度欄,下拉框,表格,彈出框,按鈕選取文件路徑,文件樹形結(jié)構(gòu),日期等幾十種控件。
有了這個(gè)神器,是不是可以告別Python里面的tk庫(kù),也可以省去學(xué)習(xí)HTML的時(shí)間,還等啥,趕緊下載嘗鮮一下吧。