第三週回顧
這一週我總共寫了六篇文章:
這六天的文章中,一篇屬於技術性,兩篇屬於觀念性,三篇屬於程式實作。
在這週的學習裡,我最大的收穫是讓程式不再只是單機運作,而是能與外部世界產生連結。透過 API 串接,我第一次體會到只要善用網路資源,就能讓小程式立即具備即時資訊的能力,例如天氣查詢,就能馬上服務到日常生活。另一方面,資料格式的整理與比較(JSON、XML、YAML),也讓我理解到程式世界裡的溝通方式,背後其實都有一套標準。而在程式實作部分,單字測驗器讓我嘗試把學習需求轉化為小工具;記事提醒程式則結合了時間模組與互動設計,算是把日常生活的需求程式化,這讓我感受到實作的價值與樂趣。
如果第一週是強調「介面友善」,第二週是追求「專業化」,那麼第三週我認為主題就是「讓程式走向世界」。程式不再只是我電腦上的小工具,而是能跨平台、接觸到更多使用場景。因此,我想嘗試加入** Kivy 工具**,讓我的小程式能直接打包成手機 App。這樣一來,不論是記事提醒、單字測驗器,甚至是抽籤或井字遊戲,都不需要再透過電腦開啟,而是可以像一般 App 一樣安裝在手機上隨時使用。
Kivy 是一個開源的 Python 函式庫,它可以讓我們用 Python 程式語言來建立漂亮的應用程式介面,最大特點是:只要寫一次程式,就能在 Windows、macOS、Linux、Android、iOS 等不同平台上執行。
就像對於我來說,已經習慣使用 Python 開發小專案,而 Kivy 能幫助快速打包成手機 App,而不需要另外學 Java 或 Swift。
可以直接用 Python 語言來開發應用程式的介面和功能,一切都用 Python 類別(Class)來組織。
範例:
# main.py
import kivy
from kivy.app import App
from kivy.uix.label import Label
class SimpleApp(App):
def build(self):
return Label(text='哈囉')
if __name__ == '__main__':
SimpleApp().run()
它會將介面設計從 Python 程式碼中分離出來,就像網頁設計中的 HTML 和 CSS 一樣。
範例:
(Python 部分)
# myapp.py
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
class KvExampleApp(App):
def build(self):
return BoxLayout()
def button_pressed(self):
print("按鈕被點擊了!")
if __name__ == '__main__':
KvExampleApp().run()
(Kv 語言部分)
<BoxLayout>:
orientation: 'vertical'
padding: 10
Button:
text: '點擊我 (由 Kv 語言定義)'
size_hint: (1, 0.3)
button_pressed 方法
on_release: app.button_pressed()
這個特色通常不需要額外的程式碼來啟用,因為 Kivy 天生就支援了!
範例:
原理是 Kivy 會自動將複雜的多點輸入轉換成簡單的事件,讓我們可以在程式碼中處理每一個獨立的觸控點。
我們先擬定使用商業與效率角度去強調 Kivy 的優勢,更方便我們去整理出它的優勢面向:
面向 | 概念比喻 | 實際效益 | Kivy 優勢 |
---|---|---|---|
商業應用 | 「一次投資,多處收益」 | 不需為 Android / iOS 分別開發兩套程式 | 跨平台能力強,程式碼重複利用率高 |
效率提升 | 「寫一份企劃書,能同時投遞給多家公司」 | 節省開發與維護時間、人力成本 | Python 語法簡潔,開發速度快 |
跨平台能力 | 「同一把鑰匙能開不同的門」 | 使用者可在電腦、手機、平板等裝置上體驗一致功能 | 支援 Windows、macOS、Linux、Android、iOS |
容易打包 | 「把商品包裝好就能直接上架」 | 開發完成後可快速生成可安裝的 .apk 或 .ipa | 有工具鏈(Buildozer、Xcode)可直接打包 |
由於我現在寫的小程式都是使用 tkinter 製作,因此想來比較看看兩者的差異:
項目 | tkinter 版 | Kivy 版 |
---|---|---|
執行環境 | 只能在電腦(Windows / macOS / Linux)上跑 | 電腦可跑,也能打包成 Android / iOS App |
介面設計 | 視窗元件偏桌面風格(適合鍵盤、滑鼠) | 手機友善(觸控按鈕、滑動選單、動畫效果) |
提醒方式 | 用 messagebox 彈窗提醒 | 可進階成手機推播通知(需搭配 plyer) |
外觀 | 簡單、偏桌面軟體風格 | 可結合 KivyMD 做出接近手機原生 App 的設計 |
擴充性 | 難以整合手機硬體 | 能呼叫手機功能(相機、GPS、麥克風等) |
發佈方式 | 只能打包成 .exe 給電腦用 | 可打包成 .apk(Android)或 .ipa(iOS)分享給朋友安裝 |
今天我從什麼是 Kivy、它的特色、以及商業與效率上的優勢來介紹這個工具。
對我來說,這就像是替我的小程式打開了一扇新大門──從原本只能在電腦上使用,逐漸邁向能在手機上操作。
之後來實際動手,把我做過的小程式改寫成 Kivy 版本,讓它真正能在手機上運行。就讓我們來期待一下吧~