インデント(文字下げ)の重要性
例えば、以下のソースは正常に動くけど
name = input('What is your name? ')
print('Hello, %s!' % name)
こっちはエラーとなる。
name = input('What is your name? ')
print('Hello, %s!' % name)
意味がわからなくて調べたら、思った以上に基本的な事だったみたい。
ざっくりいうと、同じ変数を使う間は、同じインデントなのかな?
お世話になったサイト
テキストボックスの追加
今日の目標はテキストボックス(テキストインプット)の追加とラベルの追加。
とりあえず完成したのが以下のソース。pydoroidでファイル名をつけるとデフォルトがnewfileなので、考えるのがめんどくさい時は基本的に数字を足してます。
newfile003.py
import japanize_kivy
from kivy.app import App
from kivy.uix.boxlayout import BoxLayoutclass 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で日本語の表示
他の作業も少し進めつつ、今回は日本語の表示について。
色々の方法があるようだけど、今回はインポートするだけで日本語が表示できるようになるパッケージを利用することにした。
↓ありがたい。
Python: インポートするだけで Kivy が日本語を表示できるようになる japanize-kivy を作った - CUBE SUGAR CONTAINER
まずはインストール。
pipという機能を使うらしい。pydoroid3は、サイドバーにある。
表示されたinstallの場所に「japanize_kivy」を入力してinstallをタップすると、
…うまくいかない。どうやらパッケージが見つけられないらしい。そして、プラグインが足りてないようなので、右側を選択(なんて書いてあったかか忘れた((T_T)))
Googleplayが開いたので、インストールする。
Pydroid repository plugin - Apps on Google Play
インストール後、改めてpipを使ってパッケージをインストールすると、今度は成功!
インポートを追加して、実行すると、無事に日本語が表示された。
test.py
import japanize_kivy
from kivy.app import Appclass TestApp(App):
pass
if __name__ == '__main__':
TestApp().run()
test.kv
Label: # add comment
text: "こんにちは!"
途中に何回か、test.kvを表示してるときに実行のボタンをタップしてしまい、エラーを出してしまった。
そりゃ出るだろうけど、気を使って今表示してるのはpyじゃないよ。とか教えて欲しい。しばらく、何事かと思った。
今日お世話になったサイト
Python: インポートするだけで Kivy が日本語を表示できるようになる japanize-kivy を作った - CUBE SUGAR CONTAINER
SQLiteを使いたい
Pythonは知らなくても、PHPとjavaはちょっとわかる。そんなレベルです。
次にやりたいことはSQLiteを使う!
ちなみに作りたいのは体重を記録するアプリ。それだけなら普通にダウンロードしたらいいんだけど、ちょっと欲しい機能があって軽い感じのものが見つからない。
サイトを参考に、テーブルを作成。サンプルをコピペしただけなの中身は省略。
phpとの違いは最後にcommitする必要があることかな。
commitしなくてもいい方法もあったけど、郷に入ればと参考サイトにあるので、従うことにする。
どうでもいいけど、commitって見るたびに頭の中をとあるBGMが流れるのは自分だけだろうか。
本日、気がついた。pydoroidで日本語が入力できない。
検索してみると、上の方に表示されたこちらのサイト
特集6 Android“で”プログラミングしよう | 日経ソフトウエア | 日経BP記事検索サービス
有料でほとんど読めないけど知りたいことだけは書いてあった。ありがたい(笑)
つまりは日本語入力に対応してないらしい。コピペで日本語も貼り付けられてたから油断していた。そういう事もあるんだね。
日本語を入力したいときは別の何かに書いてからコピペで!
今日お世話になったサイト
python3でsqlite3の操作。作成や読み出しなどの基礎。 - Qiita
ファイルの閉じ方と文字列の代入
ファイルの閉じ方
pydoroidでサンプルを開いていたら、気がついた。
複数のファイルが開いてる!
そういえば複数開けないと後々困るよね。
閉じ方は、ファイル名を長押しだった。
文字列の代入?
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
開くとこんな感じ
右下の黄色い丸をタップして実行らしい。
hello world
メニューを、みるとサンプルがあるので、読み込むことにする。
結構色々ありそう。
basicにhello worldがあるので、タップすると…
extractとopenを選択することになる。
extractって何?
とりあえずタップすると、なにやらパスが出てきた。きっとサンプルをコピーして保存するてきな事に違いない。
開いて実行すると、黒い画面(コンソール画面)で、hello worldの文字が表示される。
一応の目標はアプリでもあるので、GUIを使ってもhello worldを表示させてみる。
今度は、kivyのhello worldを読み込んで実行すると…
…これが正常なのかちょっと疑問だけど実行された。タップすると、背景が水色になる。
終わるときは、スマホの◀️戻るをタップ。