CyberPi既然有一個小巧的螢幕,要讓這個螢幕產生可以使用的QR Code當然也不會有任何的問題。和前一篇文章類似的,要讓CyberPi產生QR Code,也是需要透過Sprite裡面的功能。先來看一下程式:
import cyberpi as cp
import event
index = 1
qr = cp.sprite()
@event.start
def on_start():
cp.display.show_label("Welcome", "center", "center")
@event.is_press("left")
def on_left():
global index, qr
index = index - 1
if index < 1: index = 1
qr.delete()
cp.screen.render()
qr = cp.sprite()
qr.draw_qrcode("http://images.min-huang.com/{}.jpg".format(index))
qr.set_scale(350,350)
qr.show()
cp.screen.render()
@event.is_press("right")
def on_right():
global index, qr
index = index + 1
if index > 5: index = 5
qr.delete()
cp.screen.render()
qr = cp.sprite()
qr.draw_qrcode("http://images.min-huang.com/{}.jpg".format(index))
qr.set_scale(350,350)
qr.show()
cp.screen.render()
再來看一下它的操作過程影片:
在這個程式中我們使用了事件驅動的程式設計方式,所以一開始除了cyberpi之外,也要匯入event。在全域變數的方面,我們利用index作為要顯示的QR Code編號的索引,並使用qr作為要顯示QR Code的Sprite。
開始事件@event.start比較簡單,它的目標是在畫面中以show_lable顯示一個字串表示歡迎使用者執行這個程式。接著我們要等待2個事件,分別是把搖桿往左推的@event.is_press(“left”) 以及把搖桿往右推的@event.is_press(“right”),兩者之間的差別就只有對於index這個變數的處理。往左推時把index減1,但是index的值不得小於1,而往右推則是把index加1,但是不能大於目前我們的QRCode要連結的圖片數量。
我們的QRCode所連結的是5張圖片,它分的檔案名稱分別是1.jpg、2.jpg、一直到5.jpg,這五張圖形檔是放在http://images.min-huang.com的根目錄下,它們會使用完整的網路URL網址產生成QR Code,如此當使用者透過手機掃描QR Code時,就可以在手機上看到所屬的圖片內容。網址看起來像是這樣:http://images.min-huang.com/1.jpg。
那麼,當我們知道了要產生的網址,那該如何在CyberPi上產生這個QR Code呢?首先刪除前一個Sprite,刷新螢幕然後建立一個Sprite,接著利用draw_qrcode(“url”)產生QR Code,然後利用set_scale()放在圖形,在使用show()把圖形畫到記憶體中後,再以screen.render()更新螢幕的顯示即可。主要的程式碼如下:
qr.delete()
cp.screen.render()
qr = cp.sprite()
qr.draw_qrcode("想要讓QR Code連結的網址")
qr.set_scale(350,350)
qr.show()
cp.screen.render()