見出し画像

PythonのGUIライブラリ"kivy"でiOSアプリを作る!-1-

▼はじめに

こんにちは、キタグニと言います。

普段はPythonを書いたりしています。

2021年は「マイクロアプリ(小さなアプリ)開発」の年にしたい、と思っていますので、iOSアプリ開発をしようと思いました。

もちろん、普通ならswiftを選択します。

ですが、僕はPythonが好きです。

なので、PythonでもiOSアプリ開発ができるkivyというライブラリを、学んでいきたいと思います。

皆さんも、ぜひ一緒にiOSアプリを開発して、個人開発で生きていく、とまでは行かなくても、お小遣い稼ぎができるような年にしませんか?

▼なぜやるのか?

・iOSアプリを開発したい
・Pythonで開発したい
・個人開発を手軽にしていきたい
・小さなシステムを継続的にリリースしていきたい

▼なにをやるのか?

・kivyを使ってiOSアプリを開発
・とにかくシンプルに
・1アプリ1機能
・もし喜びのお声が聞こえたら機能を付け足していく

▼どうやるのか?

・Anacondaで開発
kivyのチュートリアルをやる

▼実装

Anacondaで仮想環境を作成

conda create -n kivy python=3.9
結果
----Solving environment: done

## Package Plan ##

 environment location: /Users/rw-mbp/opt/anaconda3/envs/kivy

 added / updated specs:
   - python=3.9


The following packages will be downloaded:

   package                    |            build
   ---------------------------|-----------------
   certifi-2020.12.5          |   py39hecd8cb5_0         141 KB
   pip-20.3.3                 |   py39hecd8cb5_0         1.8 MB
   python-3.9.1               |       h88f2d9e_2         9.9 MB
   setuptools-51.0.0          |   py39hecd8cb5_2         713 KB
   tzdata-2020d               |       h14c3975_0         110 KB
   wheel-0.36.2               |     pyhd3eb1b0_0          33 KB
   ------------------------------------------------------------
                                          Total:        12.6 MB

The following NEW packages will be INSTALLED:

 ca-certificates    pkgs/main/osx-64::ca-certificates-2020.12.8-hecd8cb5_0
 certifi            pkgs/main/osx-64::certifi-2020.12.5-py39hecd8cb5_0
 libcxx             pkgs/main/osx-64::libcxx-10.0.0-1
 libedit            pkgs/main/osx-64::libedit-3.1.20191231-h1de35cc_1
 libffi             pkgs/main/osx-64::libffi-3.3-hb1e8313_2
 ncurses            pkgs/main/osx-64::ncurses-6.2-h0a44026_1
 openssl            pkgs/main/osx-64::openssl-1.1.1i-h9ed2024_0
 pip                pkgs/main/osx-64::pip-20.3.3-py39hecd8cb5_0
 python             pkgs/main/osx-64::python-3.9.1-h88f2d9e_2
 readline           pkgs/main/osx-64::readline-8.0-h1de35cc_0
 setuptools         pkgs/main/osx-64::setuptools-51.0.0-py39hecd8cb5_2
 sqlite             pkgs/main/osx-64::sqlite-3.33.0-hffcf06c_0
 tk                 pkgs/main/osx-64::tk-8.6.10-hb0a8c7a_0
 tzdata             pkgs/main/noarch::tzdata-2020d-h14c3975_0
 wheel              pkgs/main/noarch::wheel-0.36.2-pyhd3eb1b0_0
 xz                 pkgs/main/osx-64::xz-5.2.5-h1de35cc_0
 zlib               pkgs/main/osx-64::zlib-1.2.11-h1de35cc_3


Proceed ([y]/n)? y


Downloading and Extracting Packages
setuptools-51.0.0    | 713 KB    | ####################################################################################### | 100% 
pip-20.3.3           | 1.8 MB    | ####################################################################################### | 100% 
certifi-2020.12.5    | 141 KB    | ####################################################################################### | 100% 
python-3.9.1         | 9.9 MB    | ####################################################################################### | 100% 
wheel-0.36.2         | 33 KB     | ####################################################################################### | 100% 
tzdata-2020d         | 110 KB    | ####################################################################################### | 100% 
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate kivy
#
# To deactivate an active environment, use
#
#     $ conda deactivate

仮想環境に入る

conda activate kivy
結果
----

(kivy) [kitaguni kivy %]

kivyをインストール

conda install kivy
結果
----

Collecting package metadata (current_repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
Collecting package metadata (repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.

PackagesNotFoundError: The following packages are not available from current channels:

 - kivy

Current channels:

 - https://repo.anaconda.com/pkgs/main/osx-64
 - https://repo.anaconda.com/pkgs/main/noarch
 - https://repo.anaconda.com/pkgs/r/osx-64
 - https://repo.anaconda.com/pkgs/r/noarch

To search for alternate channels that may provide the conda package you're
looking for, navigate to

   https://anaconda.org

and use the search bar at the top of the page.


(kivy) [kitaguni kivy %] conda install -c conda-forge kivy
Collecting package metadata (current_repodata.json): done
Solving environment: done

## Package Plan ##

 environment location: /Users/rw-mbp/opt/anaconda3/envs/kivy

 added / updated specs:
   - kivy


The following packages will be downloaded:

   package                    |            build
   ---------------------------|-----------------
   ca-certificates-2020.12.5  |       h033912b_0         138 KB  conda-forge
   certifi-2020.12.5          |   py39h6e9494a_0         143 KB  conda-forge
   docutils-0.16              |   py39h6e9494a_2         743 KB  conda-forge
   freetype-2.10.4            |       h3f75d11_0         897 KB  conda-forge
   gettext-0.19.8.1           |    h7937167_1005         3.3 MB  conda-forge
   glib-2.66.4                |       h22858aa_1         483 KB  conda-forge
   gst-plugins-base-1.14.5    |       hb4a159a_2         2.0 MB  conda-forge
   gstreamer-1.18.2           |       h93d527e_0         1.8 MB  conda-forge
   jpeg-9d                    |       hbcb3906_0         250 KB  conda-forge
   kivy-2.0.0                 |   py39hbe86cf0_1        20.3 MB  conda-forge
   lcms2-2.11                 |       h11f7e16_1         387 KB  conda-forge
   libcxx-11.0.0              |       h4c3b8ed_1         1.0 MB  conda-forge
   libglib-2.66.4             |       h7424822_1         2.8 MB  conda-forge
   libiconv-1.16              |       haf1e3a3_0         1.3 MB  conda-forge
   libpng-1.6.37              |       h7cec526_2         313 KB  conda-forge
   libtiff-4.2.0              |       h355d032_0         639 KB  conda-forge
   libwebp-base-1.1.0         |       hbcb3906_3         757 KB  conda-forge
   lz4-c-1.9.2                |       hb1e8313_3         152 KB  conda-forge
   olefile-0.46               |     pyh9f0ad1d_1          32 KB  conda-forge
   openssl-1.1.1i             |       h35c211d_0         1.9 MB  conda-forge
   pcre-8.44                  |       hb1e8313_0         220 KB  conda-forge
   pillow-8.0.1               |   py39h38d7768_0         649 KB  conda-forge
   pygments-2.7.3             |     pyhd8ed1ab_0         708 KB  conda-forge
   python_abi-3.9             |           1_cp39           4 KB  conda-forge
   sdl2-2.0.12                |       h2e338ed_1         1.2 MB  conda-forge
   sdl2_image-2.0.5           |       h7fada4f_0         123 KB  conda-forge
   sdl2_mixer-2.0.4           |       h6de7cb9_0         113 KB  conda-forge
   sdl2_ttf-2.0.15            |       hc42bb53_0          29 KB  conda-forge
   smpeg2-2.0.0               |       hfc679d8_1         158 KB  conda-forge
   zstd-1.4.5                 |       h289c70a_2         778 KB  conda-forge
   ------------------------------------------------------------
                                          Total:        43.2 MB

The following NEW packages will be INSTALLED:

 docutils           conda-forge/osx-64::docutils-0.16-py39h6e9494a_2
 freetype           conda-forge/osx-64::freetype-2.10.4-h3f75d11_0
 gettext            conda-forge/osx-64::gettext-0.19.8.1-h7937167_1005
 glib               conda-forge/osx-64::glib-2.66.4-h22858aa_1
 gst-plugins-base   conda-forge/osx-64::gst-plugins-base-1.14.5-hb4a159a_2
 gstreamer          conda-forge/osx-64::gstreamer-1.18.2-h93d527e_0
 jpeg               conda-forge/osx-64::jpeg-9d-hbcb3906_0
 kivy               conda-forge/osx-64::kivy-2.0.0-py39hbe86cf0_1
 lcms2              conda-forge/osx-64::lcms2-2.11-h11f7e16_1
 libglib            conda-forge/osx-64::libglib-2.66.4-h7424822_1
 libiconv           conda-forge/osx-64::libiconv-1.16-haf1e3a3_0
 libpng             conda-forge/osx-64::libpng-1.6.37-h7cec526_2
 libtiff            conda-forge/osx-64::libtiff-4.2.0-h355d032_0
 libwebp-base       conda-forge/osx-64::libwebp-base-1.1.0-hbcb3906_3
 lz4-c              conda-forge/osx-64::lz4-c-1.9.2-hb1e8313_3
 olefile            conda-forge/noarch::olefile-0.46-pyh9f0ad1d_1
 pcre               conda-forge/osx-64::pcre-8.44-hb1e8313_0
 pillow             conda-forge/osx-64::pillow-8.0.1-py39h38d7768_0
 pygments           conda-forge/noarch::pygments-2.7.3-pyhd8ed1ab_0
 python_abi         conda-forge/osx-64::python_abi-3.9-1_cp39
 sdl2               conda-forge/osx-64::sdl2-2.0.12-h2e338ed_1
 sdl2_image         conda-forge/osx-64::sdl2_image-2.0.5-h7fada4f_0
 sdl2_mixer         conda-forge/osx-64::sdl2_mixer-2.0.4-h6de7cb9_0
 sdl2_ttf           conda-forge/osx-64::sdl2_ttf-2.0.15-hc42bb53_0
 smpeg2             conda-forge/osx-64::smpeg2-2.0.0-hfc679d8_1
 zstd               conda-forge/osx-64::zstd-1.4.5-h289c70a_2

The following packages will be UPDATED:

 libcxx                         pkgs/main::libcxx-10.0.0-1 --> conda-forge::libcxx-11.0.0-h4c3b8ed_1

The following packages will be SUPERSEDED by a higher-priority channel:

 ca-certificates    pkgs/main::ca-certificates-2020.12.8-~ --> conda-forge::ca-certificates-2020.12.5-h033912b_0
 certifi            pkgs/main::certifi-2020.12.5-py39hecd~ --> conda-forge::certifi-2020.12.5-py39h6e9494a_0
 openssl              pkgs/main::openssl-1.1.1i-h9ed2024_0 --> conda-forge::openssl-1.1.1i-h35c211d_0


Proceed ([y]/n)? y


Downloading and Extracting Packages
lcms2-2.11           | 387 KB    | ####################################################################################### | 100% 
lz4-c-1.9.2          | 152 KB    | ####################################################################################### | 100% 
kivy-2.0.0           | 20.3 MB   | ####################################################################################### | 100% 
sdl2_mixer-2.0.4     | 113 KB    | ####################################################################################### | 100% 
sdl2_image-2.0.5     | 123 KB    | ####################################################################################### | 100% 
gstreamer-1.18.2     | 1.8 MB    | ####################################################################################### | 100% 
zstd-1.4.5           | 778 KB    | ####################################################################################### | 100% 
pcre-8.44            | 220 KB    | ####################################################################################### | 100% 
libtiff-4.2.0        | 639 KB    | ####################################################################################### | 100% 
freetype-2.10.4      | 897 KB    | ####################################################################################### | 100% 
python_abi-3.9       | 4 KB      | ####################################################################################### | 100% 
openssl-1.1.1i       | 1.9 MB    | ####################################################################################### | 100% 
libiconv-1.16        | 1.3 MB    | ####################################################################################### | 100% 
pillow-8.0.1         | 649 KB    | ####################################################################################### | 100% 
libglib-2.66.4       | 2.8 MB    | ####################################################################################### | 100% 
libcxx-11.0.0        | 1.0 MB    | ####################################################################################### | 100% 
pygments-2.7.3       | 708 KB    | ####################################################################################### | 100% 
sdl2_ttf-2.0.15      | 29 KB     | ####################################################################################### | 100% 
gst-plugins-base-1.1 | 2.0 MB    | ####################################################################################### | 100% 
certifi-2020.12.5    | 143 KB    | ####################################################################################### | 100% 
smpeg2-2.0.0         | 158 KB    | ####################################################################################### | 100% 
ca-certificates-2020 | 138 KB    | ####################################################################################### | 100% 
olefile-0.46         | 32 KB     | ####################################################################################### | 100% 
libpng-1.6.37        | 313 KB    | ####################################################################################### | 100% 
libwebp-base-1.1.0   | 757 KB    | ####################################################################################### | 100% 
glib-2.66.4          | 483 KB    | ####################################################################################### | 100% 
docutils-0.16        | 743 KB    | ####################################################################################### | 100% 
jpeg-9d              | 250 KB    | ####################################################################################### | 100% 
gettext-0.19.8.1     | 3.3 MB    | ####################################################################################### | 100% 
sdl2-2.0.12          | 1.2 MB    | ####################################################################################### | 100% 
Preparing transaction: done
Verifying transaction: done
Executing transaction: done

kivyのpongゲームチュートリアルをみる

しかし、

You know how to run a basic Kivy application. See Create an application if you don’t.
基本的なKivyアプリケーションの実行方法は知っていますね。分からない場合は、アプリケーションを作成するを参照してください。

とあったので、今回はこれをやる。

シンプルなkivyアプリを作る

kivyというディレクトリを作り、app.pyファイルを作成。

touch main.py

チュートリアルのコードをコピペ

import kivy
kivy.require('1.0.6') # replace with your current kivy version !

from kivy.app import App
from kivy.uix.label import Label


class MyApp(App):

   def build(self):
       return Label(text='Hello world')


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

実行

python main.py
結果
----

[WARNING] [Config      ] Older configuration version detected (0 instead of 21)
[WARNING] [Config      ] Upgrading configuration in progress.
[INFO   ] [Logger      ] Record log in /Users/rw-mbp/.kivy/logs/kivy_20-12-28_0.txt
[INFO   ] [Kivy        ] v2.0.0
[INFO   ] [Kivy        ] Installed at "/Users/rw-mbp/opt/anaconda3/envs/kivy/lib/python3.9/site-packages/kivy/__init__.py"
[INFO   ] [Python      ] v3.9.1 (default, Dec 11 2020, 06:28:49) 
[Clang 10.0.0 ]
[INFO   ] [Python      ] Interpreter at "/Users/rw-mbp/opt/anaconda3/envs/kivy/bin/python"
[INFO   ] [Factory     ] 186 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_imageio, img_dds, img_sdl2, img_pil (img_ffpyplayer ignored)
[INFO   ] [Text        ] Provider: sdl2
[INFO   ] [Window      ] Provider: sdl2
[INFO   ] [GL          ] Using the "OpenGL ES 2" graphics system
[INFO   ] [GL          ] Backend used <sdl2>
[INFO   ] [GL          ] OpenGL version <b'2.1 INTEL-16.0.49'>
[INFO   ] [GL          ] OpenGL vendor <b'Intel Inc.'>
[INFO   ] [GL          ] OpenGL renderer <b'Intel(R) Iris(TM) Plus Graphics 645'>
[INFO   ] [GL          ] OpenGL parsed version: 2, 1
[INFO   ] [GL          ] Shading version <b'1.20'>
[INFO   ] [GL          ] Texture max size <16384>
[INFO   ] [GL          ] Texture max units <16>
[INFO   ] [Window      ] auto add sdl2 input provider
[INFO   ] [Window      ] virtual keyboard not allowed, single mode, not docked
[INFO   ] [Base        ] Start application main loop
[INFO   ] [GL          ] NPOT texture support is available

なにやら、warningとかinfoとか出てきた。
が、

スクリーンショット 2020-12-28 21.10.19

続けて、ハローワールド画面が表示された! わーい!

コード分解(なんとなくの解説)

# kivyライブラリをインポートして使えるようにする

import kivy
# kivyのバージョン指定?

kivy.require('1.0.6') # replace with your current kivy version !
replace with your current kivy version !
現在のkivyのバージョンに置き換えてください!

とある。。
(実行前にちゃんと読もうね。)
kivyのバージョンを確認しておく。

conda list
結果
----

# Name                    Version                   Build  Channel
ca-certificates           2020.12.5            h033912b_0    conda-forge
certifi                   2020.12.5        py39h6e9494a_0    conda-forge
docutils                  0.16             py39h6e9494a_2    conda-forge
freetype                  2.10.4               h3f75d11_0    conda-forge
gettext                   0.19.8.1          h7937167_1005    conda-forge
glib                      2.66.4               h22858aa_1    conda-forge
gst-plugins-base          1.14.5               hb4a159a_2    conda-forge
gstreamer                 1.18.2               h93d527e_0    conda-forge
jpeg                      9d                   hbcb3906_0    conda-forge
kivy                      2.0.0            py39hbe86cf0_1    conda-forge
lcms2                     2.11                 h11f7e16_1    conda-forge
libcxx                    11.0.0               h4c3b8ed_1    conda-forge
libedit                   3.1.20191231         h1de35cc_1  
libffi                    3.3                  hb1e8313_2  
libglib                   2.66.4               h7424822_1    conda-forge
libiconv                  1.16                 haf1e3a3_0    conda-forge
libpng                    1.6.37               h7cec526_2    conda-forge
libtiff                   4.2.0                h355d032_0    conda-forge
libwebp-base              1.1.0                hbcb3906_3    conda-forge
lz4-c                     1.9.2                hb1e8313_3    conda-forge
ncurses                   6.2                  h0a44026_1  
olefile                   0.46               pyh9f0ad1d_1    conda-forge
openssl                   1.1.1i               h35c211d_0    conda-forge
pcre                      8.44                 hb1e8313_0    conda-forge
pillow                    8.0.1            py39h38d7768_0    conda-forge
pip                       20.3.3           py39hecd8cb5_0  
pygments                  2.7.3              pyhd8ed1ab_0    conda-forge
python                    3.9.1                h88f2d9e_2  
python_abi                3.9                      1_cp39    conda-forge
readline                  8.0                  h1de35cc_0  
sdl2                      2.0.12               h2e338ed_1    conda-forge
sdl2_image                2.0.5                h7fada4f_0    conda-forge
sdl2_mixer                2.0.4                h6de7cb9_0    conda-forge
sdl2_ttf                  2.0.15               hc42bb53_0    conda-forge
setuptools                51.0.0           py39hecd8cb5_2  
smpeg2                    2.0.0                hfc679d8_1    conda-forge
sqlite                    3.33.0               hffcf06c_0  
tk                        8.6.10               hb0a8c7a_0  
tzdata                    2020d                h14c3975_0  
wheel                     0.36.2             pyhd3eb1b0_0  
xz                        5.2.5                h1de35cc_0  
zlib                      1.2.11               h1de35cc_3  
zstd                      1.4.5                h289c70a_2    conda-forge

kivyは2.0.0。。。
全然ちがう!!

ということで、修正して改めて実行しておく。
何か変わるのだろうか?

python main.py
結果
----

[INFO   ] [Logger      ] Record log in /Users/rw-mbp/.kivy/logs/kivy_20-12-28_1.txt
[INFO   ] [Kivy        ] v2.0.0
[INFO   ] [Kivy        ] Installed at "/Users/rw-mbp/opt/anaconda3/envs/kivy/lib/python3.9/site-packages/kivy/__init__.py"
[INFO   ] [Python      ] v3.9.1 (default, Dec 11 2020, 06:28:49) 
[Clang 10.0.0 ]
[INFO   ] [Python      ] Interpreter at "/Users/rw-mbp/opt/anaconda3/envs/kivy/bin/python"
[INFO   ] [Factory     ] 186 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_imageio, img_dds, img_sdl2, img_pil (img_ffpyplayer ignored)
[INFO   ] [Text        ] Provider: sdl2
[INFO   ] [Window      ] Provider: sdl2
[INFO   ] [GL          ] Using the "OpenGL ES 2" graphics system
[INFO   ] [GL          ] Backend used <sdl2>
[INFO   ] [GL          ] OpenGL version <b'2.1 INTEL-16.0.49'>
[INFO   ] [GL          ] OpenGL vendor <b'Intel Inc.'>
[INFO   ] [GL          ] OpenGL renderer <b'Intel(R) Iris(TM) Plus Graphics 645'>
[INFO   ] [GL          ] OpenGL parsed version: 2, 1
[INFO   ] [GL          ] Shading version <b'1.20'>
[INFO   ] [GL          ] Texture max size <16384>
[INFO   ] [GL          ] Texture max units <16>
[INFO   ] [Window      ] auto add sdl2 input provider
[INFO   ] [Window      ] virtual keyboard not allowed, single mode, not docked
[INFO   ] [Base        ] Start application main loop
[INFO   ] [GL          ] NPOT texture support is available

warning消えた!!!!
表示された画面は、どうやら変わりないよう。

# kivyのappのAppクラスを取り込んでいるみたい。
# Appクラスを継承することで、さまざまなGUIアプリが簡単に作れるようになる、と思われる。

from kivy.app import App

# kivyのuixのlabelのLabelを取り込んでいる。
# おそらく、文字を表示させるパーツを担当するメソッドか何かだろう。

from kivy.uix.label import Label
# importで取り込んだAppクラスを継承するMyAppクラスを作成。
# ここにさまざまなパーツなどを書いていく、と予想する。
# 今回であれば、簡単なHello worldテキストを返すbuildメソッドが定義されている。

class MyApp(App):

   def build(self):
       return Label(text='Hello world')
# まいどおなじみ、おまじない。
# コマンドラインから呼び出されたかどうかを判定している。
# 他のファイルから呼び出された場合は、実行しない。
# MyAppクラスが継承しているAppクラスのrun()メソッドが実行されている。

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

おまけ

文字を変えてみる。

import kivy
kivy.require('2.0.0') # replace with your current kivy version !

from kivy.app import App
from kivy.uix.label import Label


class MyApp(App):

   def build(self):
       return Label(text='日本語表示できるかな?')


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

スクリーンショット 2020-12-28 21.29.47

日本語は文字化けする。
日本語フォントをインストールすれば回避できると思われる?

ラベルを増やしてみる。

import kivy
kivy.require('2.0.0') # replace with your current kivy version !

from kivy.app import App
from kivy.uix.label import Label


class MyApp(App):

   def build(self):
       return Label(text='world')

   def make(self):
       return Label(text='hello')


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

まあ、走らんでしょう。。。
実行。

スクリーンショット 2020-12-28 21.33.33

走った!
しかし、make()メソッドは、無視されている、もしくは、隠れてしまっている。
(ちゃんと調べてから実行しようね。。。)

ボタン、とかないかな? と思って適当にやってみる。(コラ)

import kivy
kivy.require('2.0.0') # replace with your current kivy version !

from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.button import Button

class MyApp(App):

   def build(self):
       return Label(text='world')

   def make(self):
       return Button(text='hello')


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

スクリーンショット 2020-12-28 21.36.27

お、エラーにはならなかったぞ!!!(コラ)

Buttonメソッドはあるけれど、どうやらアプリ本体のMyAppクラスの書き方が間違っているっぽい。

と、ここまでやって、チュートリアルを読んでいったら、カスタマイズされたコードが載っていた。(ちゃんと読め)

from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput


class LoginScreen(GridLayout):

   def __init__(self, **kwargs):
       super(LoginScreen, self).__init__(**kwargs)
       self.cols = 2
       self.add_widget(Label(text='User Name'))
       self.username = TextInput(multiline=False)
       self.add_widget(self.username)
       self.add_widget(Label(text='password'))
       self.password = TextInput(password=True, multiline=False)
       self.add_widget(self.password)


class MyApp(App):

   def build(self):
       return LoginScreen()


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

スクリーンショット 2020-12-28 21.41.10

おおお! こんなに簡単にGUIアプリが作れるのかー!!!
テキスト入力と、パスワード表示でテキスト入力できるフォームが現れた!!
テンション上がりますねー!!

(しかし、日本語は文字化けする。。)

▼結果

・kivyは簡単にGUIアプリが作れる
・メソッドを調べれば、やりたいことはほとんどできそう

▼終わりに

楽しかったです。
次回以降は、もっときちんとマニュアルを読んで、ウィジェットを並べていきたいと思います!

いいなと思ったら応援しよう!