私たちはs60のためにPythonで最初のアプリケヌションを曞いおいたす

画像 最埌のトピックで 、私はあなたの食欲を枩め、s60甚のpythonができるこずを瀺したした。 次に、アプリケヌションの䜜成がいかに簡単かを瀺したす。 必芁な゜フトりェアの遞択ずむンストヌルから、プログラムをsisパッケヌゞにパックするたで、すべおを進めたす。



すぐに予玄したす。この蚘事では、symbian 9.4タッチスクリヌン付きのスマヌトフォンで動䜜する䟋を分析したすが、symbianの以前のバヌゞョンのサンプルも簡単にリメむクできたす。 さらに、ストヌリヌはWindowsでの䜜業を念頭に眮いおいたす。 他のオペレヌティングシステムのナヌザヌは、OSに必芁な゜フトりェアを簡単に遞択できたす。



ずころで、このトピックで開発するプログラムにはtwitterアカりントがありたす :)



始めたしょう...



ツヌルキット



ツヌルの遞択は、私の個人的な経隓に基づいおいたす。 たぶん、あなたは別の方法に行くでしょう:)



そのため、次のものが必芁です。

python PCバヌゞョン2.5-2.6にむンストヌルされたす。 ensymbleナヌティリティ以䞋で説明したすが動䜜し、コヌドスケッチをテストし、Pythonプログラマヌがそれなしでどこでできるかが必芁です:)



次に、ここからOSの「開発者パッケヌゞ」をダりンロヌドしたす。 Windowsの堎合、PythonForS60_1.9.7_Setup.exeになりたす。 むンストヌルしお、入手したものを確認したす。



[スタヌト]メニュヌをクリックしお、s60甚のPythonを芋぀けたす。 ensymbleナヌティリティ、オンラむンドキュメントぞのリンクオフラむンドックはこちらからダりンロヌドできたす 、PyS60 Dependenciesフォルダヌぞのショヌトカットがありたす。これは今から必芁になりたす。



フォルダヌを開いおスマヌトpython 1.9.7にむンストヌルしたすこれはpythonランタむムであり、pythonで蚘述されたプログラムの動䜜に必芁です。将来のプログラムず䞀緒に配垃する必芁もありたす。たた、pythonスクリプトシェルシェルもむンストヌルしたす。スマヌトでスクリプトを盎接実行するにはChromeを起動し、スマヌトタヌミナルからも、Bluetooth経由でも、たずえばハむパヌタヌミナル経由でも、むンタラクティブなPythonコン゜ヌルを䜿甚できたす。



むンストヌル枈み ここで、䜕を曞いお䜕を実行するかずいう問題を決定したす。



曞き蟌みには、utf-8をサポヌトするテキスト゚ディタヌが適しおいたす。コヌドの匷調衚瀺がサポヌトされおいるこずが望たしいです。 数癟人の゚ディタヌのどれを遞ぶかはあなた次第です。 圌には特別なこずは䜕も必芁ありたせん。私たちはずにかくそれを実行したせん。



゚ミュレヌタを介しおスクリプトを実行できたすが、「ラむブハヌドりェア」で実行する別の方法を䜿甚したす。



おそらくNokia PC Suiteがむンストヌルされおいたす。 このプログラムには、゚クスプロヌラヌに埋め蟌たれた「ファむルマネヌゞャヌ」がありたす。 しかし、Windows゚クスプロヌラヌが嫌いな私にずっおは、NokiaFSず呌ばれる玠晎らしいTotalCommanderプラグむンを䜿甚する方が簡単です他のFMず同様、むンタヌネット䞊で同様のプラグむンを芋぀けるこずができるず思いたす。



Nokia PC Suiteず電話の間に接続を確立したす。 Bluetoothを䜿甚するのが最も䟿利ですが、ケヌブルを䜿甚するこずもできたす。 アルゎリズムは簡単ですコヌドを入力し、保存をクリックしおTCを切り替え、スクリプトをdata / pythonフォルダヌpythonずスクリプトシェルがむンストヌルされおいるディスク䞊の電話にコピヌし、スクリプトシェルでメニュヌをクリックしお「スクリプトを実行」...ショヌトカットずファンクションキヌに慣​​れおいる手は、1〜2秒でそれを行いたす:)



䟿宜䞊、data / pythonから䟋を削陀できたす。このディレクトリを䜜業フォルダヌにしたす。



䜕か曞きたしょう



画面の䞭倮にあるボタンをクリックするず、携垯電話が動䜜するメガアプリケヌションを䜜成したす。 そしお、私たちのアプリケヌションが䌌たようなものず比范するために、電話が「mu」ず蚀った回数をカりントする機胜ず、 twitter.com / pys60_cowプログラムにメッセヌゞを远加するこずで成果を共有する機胜を远加したす:)



Pythonプログラミング蚀語に぀いお少なくずもある皋床の知識があるこずを意味したす。 そうでない堎合は、勉匷するために実行しおください:)䞊蚘で提䟛したsymbian固有のモゞュヌルのドキュメントぞのリンク



アプリケヌションの「スケルトン」を曞きたしょう。 Canvasを䜿甚するUIで、これが私のアプリケヌションの通垞の起動方法です。

  1. -*-コヌディングutf-8-*-
  2. むンポヌトシステム
  3. e32をむンポヌト
  4. appuifw むンポヌト から *
  5. グラフィックのむンポヌト から *
  6. app_path-写真ず音声が衚瀺されるパス... app.full_name[0]これは最初の文字です
  7. 䜜業䞭のドラむブ
  8. app_path = app。 full_name   [ 0 ] + u ' \\デヌタ\\ python \\ '
  9. クリック数のあるファむルが存圚するパス。埌でこのパスを倉曎したす
  10. data_path = app_path
  11. クラス Main
  12. def __init__  self  
  13. スクリヌンキヌボヌドをオフにする
  14. アプリ。 directional_pad = False
  15. 背景画像でゞヌプパむを開く
  16. 自己 。 スプラッシュ =むメヌゞ。 オヌプン  app_path + 'splash.jpg' 
  17. キャンバスを初期化しお、䜜業を続けたす
  18. redraw_callbackで、画面が再描画されたずきに呌び出す関数を指定したす。
  19. 自己 。 canvas = Canvas  redraw_callback = self。redraw 
  20. キャンバスを持぀画面に衚瀺されるものを瀺したす
  21. アプリ。 body = self キャンバス
  22. def redraw  self 、rect  
  23. 画像をキャンバスに配眮
  24. 自己 。 キャンバス ブリット  self。splash 
  25. 開いた盎埌にアプリケヌションが閉じないように必芁なロックオブゞェクトを䜜成したす
  26. ロック= e32 Ao_lock  
  27. 右゜フトキヌを抌しおロックを解陀するず、アプリケヌションが閉じたす。
  28. アプリ。 exit_key_handler =ロック。 合図
  29. a =メむン 
  30. ロック 埅぀  




プログラムの絵を描いおください。 私は芞術家ではありたせん。ずりあえずこの嚯楜は私のものです。



画像



今では、プログラムを再掻性化しお、カりモヌに胜力を远加するこずが残っおいたす。 ゚ディタヌで画像を開き、画像がある定芏で枬定したす。

次の行を__init__に远加したす。

牛アむコンsay_mu関数がある座暙にバむンドする

自己 。 キャンバス bind  EButton1Down、 self。say_mu 、   44、171  、  300、400   

牛を係留する音を開く

自己 。 mu =オヌディオ。 音 オヌプン  app_path + 'cow.mp3' 


次に、say_mu関数を䜜成したす。 関数がタプルずしお報告されるずいう事実に泚意を喚起したいず思いたす。タプルには、指を突いた座暙が含たれおいたすが、ただ必芁ありたせん。 そしお最埌に、「moo」になる関数を曞きたす

def say_mu  self 、event  

サりンドがすでに再生されおいる堎合は、停止したす

自己の 堎合 。 mu 。 状態   ==オヌディオ。 EPlaying 

自己 。 mu 。 停止  

自己 。 mu 。 プレむ  


cow.mp3ファむルをドロップし、今必芁な新しいモゞュヌルをむンポヌトするこずを忘れないでください。

オヌディオをむンポヌトする

from key_codes import * EButton1Down定数甚


次に、「カりンタヌmu」を远加したす。 mu.txtファむルを䜜成し、それに数倀0を曞き蟌んで、䜜業ディレクトリに移動したす。

__init__に次の行を远加したす。



self.mu_count = intopendata_path + 'mu.txt'。read



mu.txtファむルぞのパスは、app_pathにない倉数data_pathに誀っお配眮されるこずはありたせん。埌のsisのアセンブリ䞭に、これが行われる理由を説明したす。 say_mu関数で、次の行を远加したす。



self.mu_count + = 1

opendata_path + 'mu.txt'、 'w'。writestrself.mu_count



mooingカりンタヌを増やしお、ファむルに保存する必芁がありたす。

キャンバスに碑文を衚瀺し、各モヌニング埌に匷制的に再描画するために残りたす。 最埌に、次のスクリプトを取埗したす。

  1. -*-コヌディングutf-8-*-
  2. むンポヌトシステム
  3. e32をむンポヌト
  4. appuifw むンポヌト から *
  5. グラフィックのむンポヌト から *
  6. オヌディオをむンポヌトする
  7. key_codes から むンポヌト *
  8. app_path = app。 full_name   [ 0 ] + u ' \\デヌタ\\ python \\ '
  9. data_path = app_path
  10. クラス Main
  11. def __init__  self  
  12. 自己 。 mu_count = int  open  data_path + 'mu.txt'  。 read   
  13. アプリ。 directional_pad = False
  14. 自己 。 スプラッシュ =むメヌゞ。 オヌプン  app_path + 'splash.jpg' 
  15. 自己 。 canvas = Canvas  redraw_callback = self。redraw 
  16. アプリ。 body = self キャンバス
  17. 自己 。 キャンバス bind  EButton1Down、 self。say_mu 、   44、171  、  300、400   
  18. 自己 。 mu =オヌディオ。 音 オヌプン  app_path + 'cow.mp3' 
  19. def redraw  self 、rect = None  
  20. 自己 。 キャンバス ブリット  self。splash 
  21. 自己 。 キャンバス text   30、465  、text = u 'mumbleds times。'   self。mu_count  、fill = 0xffffff 
  22. def say_mu  self 、event  
  23. 自己の 堎合 。 mu 。 状態   ==オヌディオ。 EPlaying 
  24. 自己 。 mu 。 停止  
  25. 自己 。 mu 。 プレむ  
  26. 自己 。 mu_count + = 1
  27. open  data_path + 'mu.txt' 、 'w'  。 曞き蟌み  str  self。mu_count  
  28. 自己 。 再描画  
  29. ロック= e32 Ao_lock  
  30. アプリ。 exit_key_handler =ロック。 合図
  31. a =メむン 
  32. ロック 埅぀  




ほんの少しだけ残っお、ツむッタヌ䞊のナヌザヌのリク゚ストで投皿しおください:)

これには、Tweepyラむブラリが必芁です別のラむブラリを䜿甚できたすが、私はこのラむブラリが最も気に入っおいたす。



サヌドパヌティのモゞュヌルを操䜜する機胜を远加するのは非垞に簡単です。 パッケヌゞをいく぀かのフォルダヌに展開し、このパスをsys.pathに远加できたす。 たた、これらのサヌドパヌティモゞュヌルはzipアヌカむブにパッケヌゞ化し、そこから盎接むンポヌトするこずができたすが、実際にはこれを行いたす。 準備したアヌカむブをダりンロヌドしtweepyはsimplejsonに䟝存しおいたす、䜜業ディレクトリに配眮しお、スクリプトに行を远加したす。

sys パス 远加  app_path + 'my_modules.zip' 

tweepyをむンポヌトする


ツむヌトの実装には、数行しかかかりたせん。

def post_to_twitter  self  

name = query  u 'Your name' 、 'text' 

名前でない 堎合 name = u 'Anonymous'

api = tweepy。 API 新芏  'basic' 、 'pys60_cow' 、 'pys60cow' 

api update_status  u 'ナヌザヌsで牛はs回぀ぶやきたした'   name、 self。mu_count  

泚 u 'Tweet added' 




1぀のポむントでメニュヌを䜜成するこずを忘れないでください



app.menu = [u 'ツむヌトを投皿する'、self.post_to_twitter]



これでスクリプトの準備ができたした。 そしお、蚘事の次の郚分から始めたす。



sisでのPythonスクリプトのパッキング



s60甚のPythonに付属のensymbleナヌティリティを䜿甚したす。 この奇跡のナヌティリティを起動したす。



画像



c/ temp / Pys60Cowなど、プロゞェクトのどこかにフォルダヌを䜜成し、そこにファむルcow.py、cow.mp3、splash.jpg、my_modules.zipを配眮したす。

cow.pyの名前をdefault.pyに倉曎したす



次に、むンストヌルされたアプリケヌションにファむルを配眮するこずに぀いお話したしょう。

グラフィックなどの必芁なファむルを含むスクリプト自䜓は、x/ private / UID /フォルダヌに分類されたす。ここで、xはアプリケヌションをむンストヌルするディスク、UIDはアプリケヌションのuidです。 このフォルダヌは読み取り専甚であるため、アプリケヌションデヌタは別のフォルダヌ、たずえばx/ data / PyS60Cow /に配眮する必芁がありたす。したがっお、2぀の倉数app_pathずdata_pathをプログラムに入力したした。 次に、実際に䜿甚するものに倉曎する必芁がありたす。



たず、プログラムの有効なUIDを生成したす。 これを行うには、ensymbleを実行し、スクリプトディレクトリを遞択し、参照をクリックしおフォルダヌc/ temp / Pys60Cowを遞択したす。 [䜜成]ボタンからパッキングを開始するず、倚くの譊告が衚瀺されたりィンドりが衚瀺されたす。



画像



そしお、これは生成されたUIDです。 default.pyを開き、app_pathずdata_pathを線集したす。



app_path = app.full_name[0] + u '\\ private \\ eecc323a \\'

data_path = app.full_name[0] + u '\\ data \\ Pys60Cow \\'



したがっお、ensymbleで[詳现]をクリックし、蚭定リストの[uid]フィヌルドに0xeecc323aず入力したす。 たた、アプリケヌションのバヌゞョンをX.YY.ZZの圢匏ですぐに蚭定したす

ここで、デヌタ/ PyS60Cowフォルダヌを凊理したす。このフォルダヌは、スマヌトフォンにむンストヌルし、mu.txtファむルを含める必芁がありたす。 c/ temp / PyS60Cowでは、他のフォルダヌなど、フォルダヌを䜜成したす。そのフォルダヌには、スマヌトフォン䞊にあるべき構造を持぀ディレクトリが䜜成されたす。 私たちの堎合、これらはdata / PyS60Cowのサブフォルダヌであり、mu.txtファむルをそこにコピヌしたす。 シンボルの[远加オプション]蚭定で、オプション--extrasdir = otherを指定したす



今床はアむコンの番です。 sisアプリケヌションのアプリケヌションアむコンはsvg圢匏である必芁がありたす。 このアプリケヌションの既補のアむコンを䜿甚できたす。 次に、オプション--icon = path_を远加オプションのアむコンに远加したす。たずえば、--icon = c\ temp \ icon.svg



切望されおいる[䜜成]ボタンをクリックし、生成されたsisパッケヌゞをスマヌトフォンにむンストヌルしお実行しようずするず、cgiモゞュヌルの欠劂に関する゚ラヌが衚瀺されたす。 このモゞュヌルをsisパッケヌゞに入れるのは単に「忘れた」ずいう意味です。 手動で远加し、远加オプション--extra-modules = cgiを远加したす。 もう䞀床入れたす。 これでアプリケヌションの準備が敎いたした。奜奇心itive盛な心を喜ばせおくれたす:)



完成したsisファむルはここからダりンロヌドできたす。パパはパッケヌゞ化の準備ができおおり、スクリプト、メディアファむルなどが含たれおいたす。



All Articles