私はpython
kivyを研究し、自分の食事を多様化するための小さなアプリケーションを書くことにしました。 私はそれを共有することにしました。 この記事は、初心者の方を対象にしています。 アプリケーションには約100行のコードが必要です。
自転車
アプリケーションを作成する目的:
- 食事中の頻繁な繰り返しを避けてください。 同じ料理を頻繁に食べないようにするため。
- 私が食べた料理を忘れないでください、そして忘れてしまい、何年もの間彼らに戻っていませんでした、なぜなら私は角質を覚えていなかったからです。 それは私に起こります。
イントロ
イントロで歌詞を読むことはできません。
ある国の1つのホテルに住んでいたため、朝食に毎日卵を与えられ、それ以降は何もしなかったため、1か月後にかゆみが始まりました。 彼は以前にそのような何かに苦しんだことはありませんでしたが、彼は医療援助を求めました。 苦い経験を学んだ後、彼は自分で食物の繰り返しをできる限り少なくして、体内に何も蓄積しないようにすることを決めました。 これは私の個人的な経験です。 おそらく例外のないルールはないでしょう。おそらく、オートミールは何十年も毎日食べることができます。
スクリーンショット
私の食事は50の料理で構成されているとします。 たとえば、今日はオムレツを食べました。 ボタンを押すと、オムレツが50行目に並んでおり、その前に49個の料理があり、再びオムレツに行くことができます。 これがアプリケーションのロジック全体です。 (スクリーンショットでは、料理は調理されており、すべての偶然はランダムであり、実際の食事とは関係ありません)。
ソースコードと説明
main.pyfrom kivy.app import App from kivy.uix.button import Button from kivy.uix.boxlayout import BoxLayout from kivy.uix.screenmanager import ScreenManager, Screen from kivy.uix.recycleview import RecycleView from kivy.uix.gridlayout import GridLayout from kivy.core.window import Window from kivy.config import ConfigParser from kivy.uix.textinput import TextInput from kivy.uix.label import Label from kivy.metrics import dp from datetime import datetime import os import ast import time class MenuScreen(Screen): def __init__(self, **kw): super(MenuScreen, self).__init__(**kw) box = BoxLayout(orientation='vertical') box.add_widget(Button(text=' ', on_press=lambda x: set_screen('list_food'))) box.add_widget(Button(text=' ', on_press=lambda x: set_screen('add_food'))) self.add_widget(box) class SortedListFood(Screen): def __init__(self, **kw): super(SortedListFood, self).__init__(**kw) def on_enter(self):
コードはPythonに精通している人々のために教育目的で提供されているため、私は故意にkvファイルを使用しませんでした。 すべてが裸のPythonで書かれています。 説明では、Pythonコードの説明には触れませんが、すぐにKivyの特定の機能に進みます。
行こう:
class MenuScreen(Screen):
このクラスは、アプリケーションの開始ページを起動する役割を果たします。たとえば、StartScreenなど、何でも呼び出すことができます。 kivy Screenモジュールを継承します 。 アプリケーションは3つのウィンドウで構成され、これらのウィンドウはこのモジュールを使用して作成されます box = BoxLayout(orientation='vertical')
BoxLayoutは、画面をデフォルトで水平に等しい部分に分割し、orientation = 'vertical'と書いて垂直に分割します Button(text=' ', on_press=lambda x: set_screen('list_food'))
Button-ボタンを作成します。on_pressは、押されたときに起動する機能を設定します。
.add_widget()
-レイヤーとウィンドウにボタンを追加します self.layout = GridLayout(cols=1, spacing=10, size_hint_y=None)
グリッドレイアウトは 、HTMLのテーブルタグに似ており、cols(列または行の数)-行の数を示します。
両方のパラメーターまたは1つのパラメーターを指定できます。
画面は、必要な数のベイに分割されます。
root = RecycleView(size_hint=(1, None), size=(Window.width, Window.height))
RecycleViewは、アプリケーションで垂直スクロールを作成するモジュールです。 RecycleViewの機能は、同じ幅と高さの要素を持つスクロールを構築することです。 そして、それは高速に動作します。 ScrollViewモジュールがあり、さまざまなサイズの要素でスクロールを作成できますが、 RecycleViewよりも動作が遅くなります。
config.get('General', 'user_data')
-このような行は、多くの場合、コードに含まれています。 ネイティブの構成kivyリポジトリをデータストアとして使用しました。 さて、数千の料理がありますが、sqliteなどで庭を囲うことは意味がありません。 すべてのデータは1つのファイルに保存されます。 コードでself.directoryを指定した場合、このファイルはアプリケーション自体と同じフォルダーに格納されますが、self.user_data_dirを指定して、順列または更新中にこのファイルが破壊されないようにすることができます。
Windows、Linux、MacOSで実行する
すべてのオペレーティングシステムの原則は同じです。
- python3を配置します
- キビーを入れます
- main.pyファイルを作成し、上記のコード全体をそこに貼り付けます
- チームで実行
python3 main.py
プログラムは動作するはずです。
APKファイルを作成し、Androidを使用して携帯電話で実行する
そのため、Pythonで記述されたプログラムコードファイルがあります。 Androidフォンで起動できるようにアプリケーションを作成する方法は? 以前は、タンバリンとのスキルとダンスを必要とするかなり洗練されたプロセスでした。 これは問題ではありません。
手順を追った説明を次に示します。
- kivy開発者から既製の仮想マシンをダウンロードします。すべての仮想マシンがすでに構成されています。 https://github.com/Zen-CODE/kivybits/blob/master/KivyCompleteVM/ReadMe.txt パスワード:kivy
- Virtual Boxで起動します。
- ターミナルを開き、次のコマンドを入力します。
- 最後のコマンドは、同じディレクトリにbinフォルダーを作成します。binには、foodoptions-0.1-debug.apkファイルがあります。このファイルは、電話にアップロードして、アプリケーションをインストールして楽しむことができます。
apkファイルを携帯電話にアップロードする方法は?もちろん、好きなように実行し、メールで送信し、どこかに置き、電報などに入れてから、アプリケーションを携帯電話にダウンロードできます。
しかし、これには専用のツールがあります。 電話で開発者モードをオンにし、USBケーブルで接続します。 仮想マシンは、電話が接続されたことを確認する必要があります。 次に、adbをインストールします。
sudo apt install adb
インストール後、binフォルダーに移動してコマンドを入力します
adb install -r foodoptions-0.1-debug.apk
そして、私たちが見た後約1分で電話でアプリケーションを見ることができます
コンソールでの成功。
kivy@kivy-complete:~/Project/FoodOptions/bin$ adb install -r foodoptions-0.1-debug.apk 342 KB/s (10083019 bytes in 28.730s) Success kivy@kivy-complete:~/Project/FoodOptions/bin$
突然アプリケーションがクラッシュしたり、予期したとおりに動作しない場合、エラーを表示するためのそのようなコマンドがあります
adb logcat| grep python
ロシア語のアプリケーション名「Food Diary」など、アプリケーションをロシア語で呼び出す場合は、ファイルに変更を加える必要があります。
.buildozer/android/platform/build/dists/foodoptions/templates/strings.tmpl.xml
アプリケーションのロシア語の名前はappNameタグに書き込まれます。このフォルダーは、buildozer android debugの最初の起動後に作成されます。 ファイルを編集した後、FoodOptionsフォルダーに戻り、buildozer android debugを再度実行します。 ファイルは新しい方法でアセンブルされます。 電話でのインストール後、プログラム名はロシア語で書かれます。
buildozer.specファイルについてこれが私のgithubファイルです:
buildozer.specこのファイルはbuildozerにパッケージのビルド方法を正確に伝えます。
さまざまなバリエーションがあります。 気にする人は、仮想マシン内でコマンドを入力します:
cd /tmp buildozer init
デフォルトのbuildozer.specファイルが作成され、多数のコメントと説明が含まれます。 たとえば、アプリケーションのアイコンが必要な場合は、次の行で示します。
icon.filename = %(source.dir)s/data/icon.png
アイコン付きのファイル。 そして、アプリケーションは既にアイコンで組み立てられています。
公式のpythonライブラリの一部ではない特定のモジュールをロードする必要がある場合は、requirements =行で行います。 一般に、buildozer.specファイルに関するストーリーには、記事全体、または2つも含まれます。
Google Playでアプリケーションをダウンロードする登録し、すべての手順を実行し、キーを取得する必要があります。 そして、実行します:
sudo apt install zipalign buildozer android release jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore /path/keystore bin/apk-unsigned.apk apkname zipalign -v 4 bin/apk-apkname-unsigned.apk bin/apk-apkname-release.apk
結果のファイルapk-apkname-release.apkがGoogle Playにアップロードされます。
参照資料
原則として、Pythonでプログラミングできる人は誰でもアプリケーションを変更して、次のものを簡単に追加できます。
- デザインを追加してアプリを美しくする
- kvファイルを使用して、コードを簡単にします。 たとえば、Webプログラミングに精通している人は、HTMLテンプレートとHTMLテンプレートのないコードを想像してください。 ボタン、レイヤー、その他をkvファイルに削除することは、Webプログラマーにとってはjinja2のようなものです。 ロジックは.pyファイルに残り、つまらないものはkvファイルに残ります。
- カロリー、タンパク質、炭水化物、脂肪をカウントする(BJU)
- 料理を撮影する機能を追加します