Brython練習—瀏覽器
※本篇在學習Brython的大致使用後,進行實際執行。
這次將把前一篇文章的分組內容利用Brython作呈現,在這一一把步驟試著列出。
在此之前,說明若想要利用Brython,執行的方法:
1.載入腳本Brython.js。
2.寫入 brython()
。
3.寫入 <script type=”text/python”>
。
讓我們開始實際操作:
步驟一
首先在加入套件及有關Brython的部分前,這是我們Python分組的程式(第二點開始簡寫成#content):
with open("2a raw.txt") as fh:
rea = fh.readlines()
#print (rea)
no_list = lambda list: int((sum([(len(list[i])) for i in range(len(list))]))/3)
#簡寫一個for迴圈命名為no_list,目的為求出迴圈執行次數(14次)
t = list()#命名空清單t
for k in range(len(rea)):
a = rea[k]
b = a.split()#分割每一行第k位
#print(b)
for i in range(0,len(b),3):
c = b[i:i+3]#每三字串為一次進行迴圈
t.append(c)#加入清單t
for g in range(no_list(t)):#range = 14
print("第" + str(g+1) + "組:" + str(t[g]))
列出後,開始從Bython官方網站中,一一找尋能達成我們目的的步驟,首先來到Brython下載倉儲,第一步必須將Brython.js檔案載入程式中進行使用,利用內容中寫道的Zero install !部分,我們在上述程式碼的最上方寫入下列程式碼:
<script type="text/javascript"
src="https://cdn.rawgit.com/brython-dev/brython/3.4.0/www/src/brython.js">
</script>
完成第一步。
步驟二
為了在編輯中寫入函數brython()
,需要建立<body>
,程式碼寫法為:
<body onload="brython()">
#content
</body>
步驟二-(2)
接著,還需要利用<div>
區塊標籤的功能,讓我們寫的Python程式內容包起來:
<body onload="brython()">
<div id="test">
#content
</div>
</body>
步驟二-(3)
而文章一開始說明想利用Brython的第三點,必須在 <script type=”text/python”>
中寫入Python代碼或將其連接,所以我們再加入一層<script>
:
<body onload="brython()">
<div id="test">
<script type="text/python">
#content
</script>
</div>
</body>
完成第二步,大致上的Brython載入使用都已經妥當,並繼續進行剩下步驟。
步驟三
接著我們要賦予它兩個按鈕,分別是執行程式及清除輸出內容。想要在網頁中生成按鈕,參照Brython_Documentatoin_Events,內容介紹使用按鈕的方法:
@btn.bind("click")
def show(ev):
print('ok')
在給予一個按鈕功能後,需寫入<button id=”test”>test</button>
將它生成。
步驟三-(2)
成功做出按鈕,試著放入我們要執行的程式中,直接用其將#content給上下包住(按鈕取名為but及but2):
<body onload="brython()">
<div id="one">
<script type="text/python">{% raw %}
from browser import document, html
@document["but1"].bind("click")
def echo(ev):
#content
@document["but2"].bind("click")
def delete(ev):
for row in document['one']:
row.remove()
{% endraw %}</script>
</div>
<button id="but">執行</button><button id="but2">清除</button>
</body>
※按鈕二為清除用途,以下將它分割出來提供讀者觀察:
@document["but2"].bind("click")
def delete(ev):
for row in document['one']:
row.remove()
第三步按鈕的設置即完成。
步驟四
實際看向近端瀏覽器,我們發現按下按鈕後還是無法執行,這時的問題參考Brython documentation文章,內容說明讀取檔案內容時會因為讀取時間而無法正常輸出,其解為利用函數<open()>
將時間設置忽略(給予一個假(fake)的時間),使用方法為:
fake_qs = '?foo=%s' %time.time()
再來給予檔案名稱後方加上假的時間代碼:
with open('./../../../../data/2a.txt'+fake_qs) as fh:
接著需要利用import來輸入time以及document以利執行,寫法為:
import time
from browser import document
步驟五
最後整理好經過加工的分組程式碼,就可以進行執行的測試,以下為最後的程式:
<script type="text/javascript" src="https://cdn.rawgit.com/brython-dev/brython/3.4.0/www/src/brython.js"></script>
<body onload="brython()">
<div id="one">
<script type="text/python">{% raw %}
from browser import document, html
import time
@document["mybutton"].bind("click")
def echo(ev):
fake_qs = '?foo=%s' %time.time()
with open("./../../../../2a.txt"+fake_qs) as fh:
rea = fh.readlines()
#print (rea)
no_list = lambda list: int((sum([(len(list[i])) for i in range(len(list))]))/3)
#簡寫一個for迴圈命名為no_list,目的為求出迴圈執行次數(14次)
t = list()#命名空清單t
for k in range(len(rea)):
a = rea[k]
b = a.split()#分割每一行第k位
#print(b)
for i in range(0,len(b),3):
c = b[i:i+3]#每三字串為一次進行迴圈
t.append(c)#加入清單t
for g in range(no_list(t)):#range = 14
document["one"] <= ("第" + str(g+1) + "組:" + str(t[g])) + html.BR()
@document["mybutton2"].bind("click")
def delete(ev):
for row in document['one']:
row.remove()
{% endraw %}</script>
</div>
<button id="mybutton">執行</button><button id="mybutton2">清除</button>
</body>
是不是都學會了呢?
也可以觀看網誌:https://s40523123.github.io/cd2018/2018/03/13/group3-W2/
實際執行網址:https://s40523123.github.io/cd2018/2018/03/24/group3-W5/
Last updated