CyberPi QRCode產生器

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()

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *