動機
pythonistaでuiを使い、簡単なアプリ等を作っていたました。
普段、ワンフリックでアプリを切り替えるランチャーを愛用していたのでそれを再現しようと考えたところ、タッチに関しても日本語の情報が少なかったため苦労したので、備忘録的に残しておこうと考えました。
環境
pythonista 3 ver. 3.2
iphone 11 iOS13.2.3
プログラム
フリックの方向を取得して起動するアプリを選択するようなアプリを制作しようと考えています。
その為、フリックの方向を取得するようなプログラムになっています。
実際の動作としては単にメソッドの呼び出されるタイミングを学習するような感じです。
touchTest.py
import scene
import numpy as np
class MyScene(scene.Scene):
def setup(self):
self.backgroud_color = '#3a3aff'
# フリックのベクトルの始点と終点
self.startpoint = np.array([0, 0])
self.endpoint = np.array([0, 0])
def touch_began(self, touch):
''' タッチを開始したときに呼び出されるメソッド '''
# ベクトルの始点を記憶
self.startpoint = np.array([touch.location.x, touch.loctaion.y])
# タッチの確認のため、タッチした場所に応じてprintする。
if touch.location.x > self.size[0] / 2: #タッチが画面の右半分の時
print('Right')
else:
print('Left')
def touch_moved(self, touch):
''' タッチしている最中に繰り返し呼ばれるメソッド '''
print('Moving !')
def touch_ended(self, touch):
''' タッチ最中で、指を話したときに呼び出されるメソッド '''
# ベクトルの終点を取得して、フリックしたベクトルを求める
self.endpoint = np.array([touch.location.x, touch.loctaion.y])
vec = self.endpoint - self.startpoint
# そのベクトルの始点を原点に持っていった時、終点がどの象限にあるかで表示を変える。
if vec[0] >= 0 and vec[1] > 0:
print('Up right !')
elif vec[0] < 0 and vec[1] >= 0:
print('Up left')
elif vec[0] <= 0 and vec[1] < 0:
print('Down left')
elif vec[0] > 0 and vec[1] <= 0:
print('Down right')
if __name__ == '__main__':
scene.run(MyScene())
補足等
実行すると青色の画面が出てきます。タッチやフリックをして、コンソールの表示を見ると何となく動作がわかると思います。
ランチャーアプリが実現できたらQiitaに上げるかも。。。
自分のような趣味でpythonistaを楽しむ人が増えるように願います。