ipad上pythonista_[Pythonista] iPad 上很酷的 Python 開發環境 – 炎龍老師的 blog

全功能的 Pythonista

Python 是一個簡單、全功能、強大的程式語言, 使用 Python 的人很自然會希望在任何地方都可以寫 Python 程式。一開始可能覺得, 「要是在 iOS 上有個寫 Python 的 App 就 好了, 我可以算一些簡單的東西。」現在這種 App 其實不少, 但你會發現在編輯器的使用也好, 功能上也好, 其實很難讓你有想在 iPad 或是 iPhone 上寫 Python 的衝動。因為我們也許會希望:

就是寫 Python 程式, 但要容易編輯、儲存、取用。

要可以呼叫其他 App, 完成一些自動化的工作, 比如說傳簡訊給三個同組的伙伴, 自動找十個網頁整理出結果放到 Evernote 裡等等。

可以簡單畫圖的工具, 也許可以來個函數圖形什麼的。

繼然都這樣了, 那是不是自由可以放插圖、照片, 還可以處理一下的更好。

所以說不定可以做個 iPad 遊戲了?

都到這種程度了, 是不是 iPad 的觸控啊、轉來轉去也要可以偵測使用?

好像越要越誇張, 但 iPad/iPhone 上真的有這樣的 Python 開發環境嗎? 結果真的有! 叫做 Pythonista。

自動化的工作

Pythonista 可以透過 URL Schemes 去呼叫別的 App, 甚至支援 x-callback-url 也就是叫別的 App 做點東西再回傳回來。因此, 可以做許多的自動化工作。你真的可以讓 iPad 上寫 Python 不是玩玩而已, 完全是可以配合你的需要, 簡化你的工作。這方面 Federico Viticci 有篇很棒的文章, “Automating iOS: How Pythonista Changed My Workflow" 可以參考。

假裝一個獨立的 App

你用 Pythonista 寫的程式, 可以輸出成 Xcode 的專案, 最後你再做調整也許 (因為我還沒試過) 可以完成一個獨立執行的 App, 現在我們要做的不是這個。我想很多人知道, 在 Safari 「匯出」的功能中, 有個「加入主畫面」的功能。這可以把你常去的網站, 匯出成一個 App 的樣子, 你每次點 App 就是那個網站。

現在因為 Pythonista 支援了我們剛剛說的高級 (?) URL Scheme, 如果我們用 Pythonista 寫了個叫 “MyScript" 的程式, 在 Safari 輸入網址的地方打入:

pythonista://MyScript?action=run

就可以直接執行了! 所以, 我們只要把這「加入主畫面」不就有個「假」獨立 App 了嗎? 一切都很美好, 除了你會發現你根本沒機會輸出, 因為打入上面那一段話, 你馬上會跳到 Pythonista。不過, 我們好心的作者已幫你想好, 你只要用 iPad 連到下面這個網頁,

打入你的程式名稱, 比如說 “MyScript", 如果要直接執行就在 Arguments 欄位打入 run。然後就會提示你, 可以把這一頁「加入主畫面」了!

圖形、聲音

Pythonista 有兩個主要圖形模組, 分別是 scene 和 canvas。其中 canvas 就是畫圖, 基本上是不互動的圖形顯示, 而 scene 是有互動功能的。我們這裡略略秀一下 scene 的簡單用法, 你就會發現 Pythonista 真的很容易使用。

scene 模組的基本架構如下:

from scene import *

class MyScene(Scene):

def setup(self):

# 這裡做畫圖前的設定

def draw(self):

# 這裡真的畫圖, 每秒約更新 60 次

run(MyScene()))

# 執行

是不是很簡單? 我們現在想做一個簡單的程式, 就是在 iPad 上我們按下去的地方, 就顯示「你按我!」這三個字。在我們這個物件下所有觸碰的認知都會放在 self.tocuhes.values() 裡面, 每個觸碰當然會知道 x 和 y 座標的位置。於是我們可以

# -*- coding: utf-8 -*-

from scene import *

class MyScene (Scene):

def draw(self):

background(0, 0, 0)

fill(1, 0, 0)

for touch in self.touches.values():

text('你按我!', font_name='Helvetica', font_size=100, x=touch.location.x + 50, y=touch.location.y + 50, alignment=5)

run(MyScene())

這樣就寫好了! 你可以試試。除了觸控的部份, 加背景顏色設 (0,0,0) (RGB 黑色), fill 是之後所有圖形物件 (我們的文字) 顏色 (這裡設白色)。最前面的 UTF-8 設定我想寫過 Python 中文程式的都知道, 等等, 中文! 對, scene 圖形模組中文可以直接顯示! 還有很酷的是, 我們剛剛說「所有觸控」, 沒有人規定只能單點觸控…

有些東西我們之後再來介紹, 這裡先再加個聲音, 讓我們知道 Pythonista 方便的地方。我們要加聲音, 可以加入聲音模組:

import sound

然後比如我們想放「內建」的 ‘Coin_1’ 聲音, 就

sound.play_effect('Coin_1')

即可! 我們的程式如果改成這樣, 那每次按都會發出聲音來。

# -*- coding: utf-8 -*-

from scene import *

import sound

class MyScene (Scene):

def draw(self):

background(0, 0, 0)

fill(1, 0, 0)

for touch in self.touches.values():

text('你按我!', font_name='Helvetica', font_size=100, x=touch.location.x + 50, y=touch.location.y + 50, alignment=5)

sound.play_effect('Coin_1')

run(MyScene())

請按讚:

喜歡 正在載入...

相關

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值