飽きるまでは書く

Python覚えたい。Androidアプリ作ってみたい。

インデント(文字下げ)の重要性

例えば、以下のソースは正常に動くけど

name = input('What is your name? ')

print('Hello, %s!' % name)

こっちはエラーとなる。

name = input('What is your name? ')
    print('Hello, %s!' % name)

意味がわからなくて調べたら、思った以上に基本的な事だったみたい。

ざっくりいうと、同じ変数を使う間は、同じインデントなのかな?

 

お世話になったサイト

https://www.sejuku.net/blog/86942

テキストボックスの追加

今日の目標はテキストボックス(テキストインプット)の追加とラベルの追加。

とりあえず完成したのが以下のソース。pydoroidでファイル名をつけるとデフォルトがnewfileなので、考えるのがめんどくさい時は基本的に数字を足してます。

 

newfile003.py

import japanize_kivy
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout

class RootWidget(BoxLayout):
    pass

class Newfile003App(App):
     def build(self):
    return RootWidget()

if __name__ == '__main__':
    Newfile003App().run()

newfile003.kv

<RootWidget>

    BoxLayout:
        orientation: 'vertical'
        BoxLayout:
            canvas:
                Color:
                     rgba: 0,0,1,1
                Rectangle:
                    size: self.size
                    pos: self.pos
                Label:
                    text: '入力'
            TextInput:
                 size: self.size
                 pos: self.size
                 hint_text: 'test'

BoxLayout使った瞬間、エラーが多くて困った。

とりあえず、今日わかった事。

 

1つ目のクラス名は適当でいい。←本当はダメって知ってる。

 

2つ目のクラス名は、最初を小文字にしたAppの前までが、kvファイル名になる。

 

kvファイルの一行目は、1つ目のクラス名(BoxLayoutが引数のやつ)を書く。

 

orientation: 'vertical'

は、2行目に書いても意味はない。並べたい場所に並ぶように(同じ行下げの感じの所)書く。

 

今日お世話になったサイト

Python Kivyの使い方① ~Kv Languageの基本~ - Qiita

Kivyのボックスレイアウトの使い方とその仕様 | せなブログ

Kivyの1行入力ボックスの作成方法 - Qiita

kivyで日本語の表示

 他の作業も少し進めつつ、今回は日本語の表示について。

 色々の方法があるようだけど、今回はインポートするだけで日本語が表示できるようになるパッケージを利用することにした。

 

↓ありがたい。

Python: インポートするだけで Kivy が日本語を表示できるようになる japanize-kivy を作った - CUBE SUGAR CONTAINER

 

まずはインストール。

pipという機能を使うらしい。pydoroid3は、サイドバーにある。

f:id:snowfield32:20201212025950j:image

表示されたinstallの場所に「japanize_kivy」を入力してinstallをタップすると、
f:id:snowfield32:20201212030213j:image

…うまくいかない。どうやらパッケージが見つけられないらしい。そして、プラグインが足りてないようなので、右側を選択(なんて書いてあったかか忘れた((T_T)))

Googleplayが開いたので、インストールする。

Pydroid repository plugin - Apps on Google Play

 

インストール後、改めてpipを使ってパッケージをインストールすると、今度は成功!


f:id:snowfield32:20201212030747j:image

インポートを追加して、実行すると、無事に日本語が表示された。

test.py

import japanize_kivy
from kivy.app import App

class TestApp(App):
pass

if __name__ == '__main__':
TestApp().run()

test.kv

Label: # add comment
text: "こんにちは!"


f:id:snowfield32:20201212031200j:image

 

途中に何回か、test.kvを表示してるときに実行のボタンをタップしてしまい、エラーを出してしまった。

そりゃ出るだろうけど、気を使って今表示してるのはpyじゃないよ。とか教えて欲しい。しばらく、何事かと思った。


f:id:snowfield32:20201212031610j:image

 

今日お世話になったサイト

Python: インポートするだけで Kivy が日本語を表示できるようになる japanize-kivy を作った - CUBE SUGAR CONTAINER

Python Kivyの使い方① ~Kv Languageの基本~ - Qiita

SQLiteを使いたい

Pythonは知らなくても、PHPjavaはちょっとわかる。そんなレベルです。

次にやりたいことはSQLiteを使う!

 

ちなみに作りたいのは体重を記録するアプリ。それだけなら普通にダウンロードしたらいいんだけど、ちょっと欲しい機能があって軽い感じのものが見つからない。

 

サイトを参考に、テーブルを作成。サンプルをコピペしただけなの中身は省略。

phpとの違いは最後にcommitする必要があることかな。

commitしなくてもいい方法もあったけど、郷に入ればと参考サイトにあるので、従うことにする。

どうでもいいけど、commitって見るたびに頭の中をとあるBGMが流れるのは自分だけだろうか。

 

 

本日、気がついた。pydoroidで日本語が入力できない。

検索してみると、上の方に表示されたこちらのサイト

特集6 Android“で”プログラミングしよう | 日経ソフトウエア | 日経BP記事検索サービス

有料でほとんど読めないけど知りたいことだけは書いてあった。ありがたい(笑)

 

つまりは日本語入力に対応してないらしい。コピペで日本語も貼り付けられてたから油断していた。そういう事もあるんだね。

日本語を入力したいときは別の何かに書いてからコピペで!

 

今日お世話になったサイト

python3でsqlite3の操作。作成や読み出しなどの基礎。 - Qiita

Python3でSQLite3を使う – 基本操作からエラー処理までサンプルコード付 | Crane & to.

特集6 Android“で”プログラミングしよう | 日経ソフトウエア | 日経BP記事検索サービス

ファイルの閉じ方と文字列の代入

ファイルの閉じ方

pydoroidでサンプルを開いていたら、気がついた。

複数のファイルが開いてる!


f:id:snowfield32:20201207124857j:image

 

そういえば複数開けないと後々困るよね。

閉じ方は、ファイル名を長押しだった。

 

文字列の代入?

hello worldの次のサンプルはtextinput

入力した名前付きでhelloworldのようだ。

2行目はたぶん、変数nameがsの所に入ったんだよね?なんで?

name = input('What is your name? ')

print('Hello, %s!' % name)

c言語だと、printfっていう関数でこういう風に書くのか…。

cは未知なんだよね。

 

2行目は

print('Hello, {}!'.format(name))

でも同じ。むしろ、こっちの方がおすすめされてるみたい?

サンプルは、ぜひおすすめの書き方を載せるようにお願いしたい。

 

 

今日お世話になったサイト

Pythonのprint関数で文字列、数値および変数の値を出力 | note.nkmk.me

【C言語入門】printfで文字列を表示(sprintfの使い方も解説) | 侍エンジニア塾ブログ(Samurai Blog) - プログラミング入門者向けサイト

インストールとhello world

Pythonを使えるようになりたい。

アンドロイドのアプリを作ってみたい。

でも、飽きっぽい。

ので、ブログをつけて成長日記になればいいなぁ。という事で開始することに。

 

インストール

隙間時間にちょっとづつ進めたいので、スマホでやってみることに。

まず、Google playからpydoroid3をインストール

 


Pydroid 3 - IDE for Python 3 - Apps on Google Play

 

開くとこんな感じ


f:id:snowfield32:20201207031738j:image

 

右下の黄色い丸をタップして実行らしい。

 

hello world

メニューを、みるとサンプルがあるので、読み込むことにする。

結構色々ありそう。


f:id:snowfield32:20201207032146j:image

basicにhello worldがあるので、タップすると…

extractとopenを選択することになる。

extractって何?

とりあえずタップすると、なにやらパスが出てきた。きっとサンプルをコピーして保存するてきな事に違いない。

開いて実行すると、黒い画面(コンソール画面)で、hello worldの文字が表示される。

 

一応の目標はアプリでもあるので、GUIを使ってもhello worldを表示させてみる。

今度は、kivyのhello worldを読み込んで実行すると…


f:id:snowfield32:20201207050036j:image

…これが正常なのかちょっと疑問だけど実行された。タップすると、背景が水色になる。

終わるときは、スマホの◀️戻るをタップ。

 

今日お世話になったサイト

Pydroidの使い方〜Androidでプログラミングしよう〜 - みやびのどっとぴーわい

Android上でPython3が利用できるPydroid3がスゴイ | 非IT企業に勤める中年サラリーマンのIT日記