kivyMDチュートリアル其の参什肆 バージョンアップ篇

ハロー、Qiita。いかがお過ごしでしょうか。

やっぱりこの入りがいいですかね(しらない)。ということで
今週も始まりました、KivyMDのお時間です。

もう涼しくなってきたかと思いきや、後半からは暑くなってきたり、
体調は安定しない季節となりました。でもこんな季節は個人的には割と
好きですね。みなさんはどの季節が好きでしょうか。

今週は特に変わったこともないので、遠回りせず本題に入っていきます。

## バージョンアップ

さて、さっそく今日のメインテーマに入ることとします。今日は最速で
終わるかもしれません。

ということで、前回までのおさらいですが先週のTooltip篇でComponentsは
終わっている状況を醸し出していました。ですが、実は毎週見ている方は分かる
かと思われますが、実は終わっておりません。所々、端折って端折って端折りまく
ってました。

一通り終わっているはいるのだけれども、現バージョン(v0.104.1)で動かないこと
ところが少々ありましたので、まずはバージョンアップをしてそれらが次バージョン
(v0.104.2)でどれだけ改善されているかどうか見てみなければいけません。

じゃ、どこが動かないのよということですが、以前動かなかったところをまとめた
ことがありました。以下から必要なものを抜粋して再度リストアップしておきます。

* MDSwiper
* Menu
* Navigation Drawer
* Navigation Rail
* Pickers
* Selection
* Snackbar
* Tabs

https://qiita.com/virty/items/a5b1d0752d735985b99e

これらの中には一部動かないというものもあるので、悪しからず。まだ、これだけでは
ありません。これをまとめたのはPickers篇であったので、実はそれ以降動かなかった
コンポーネント(これも一部動かないなどあり)が発覚したものもありました。(というか
Pickersパッケージがそもそも改変されたりして動かなかったり・・・)

それらが以下になります。
* ProgressBar
* Slider(Customのみ)
* Spinner(色)

とまぁざっと3点ほどと意外と見直すと少ない結果となりました。バージョンアップが
済んだときにさっと見てみてもよいかもしれません。

また、今回上げるバージョンの履歴としては以下が詳しいので、詳細は以下をご参照頂け
ればと思います。

https://kivymd.readthedocs.io/en/latest/changelog/

### Usage

いつもあるように、紐づけて章分けしてみました。まぁそこまで大そうなことはないの
ですが・・・

色々方法論としてはあると思いますが、一旦自分はパッケージを削除してみました。チュート
リアルには当たり前ですがアンインストール方法までは書いてもらえてないので、ここはStack-
OverFlowとかで実績のありそうな方法を採用してみます。効率悪くね?と思われる方は別の方法で
トライしてみても良いかもしれません。一旦ここは、削除というかアンインストールでどのような
結果となったかをコマンドと共に書き留めてみます。

#### Uninstall Command

```bash
$ pip install --upgrade pip

$ pip uninstall kivymd
```

#### 結果

```text
Found existing installation: kivymd 0.104.1
Uninstalling kivymd-0.104.1:
  Would remove:
(略)
Proceed (y/n)? y
  Successfully uninstalled kivymd-0.104.1
```

まずは削除が完了したようです。では次にバージョン指定をしてインストールを
してみましょう。

#### Install Command

```bash
$ pip install kivymd==0.104.2
```

#### 結果

```text
Collecting install
  Downloading install-1.3.4-py3-none-any.whl (3.1 kB)
Collecting kivymd==0.104.2
  Downloading kivymd-0.104.2-py3-none-any.whl (2.3 MB)
     |████████████████████████████████| 2.3 MB 2.9 MB/s 
Requirement already satisfied: kivy>=2.0.0 in /UsersFolder/.pyenv/versions/3.7.6/lib/python3.7/site-packages (from kivymd==0.104.2) (2.0.0)

(略)

Installing collected packages: kivymd, install
Successfully installed install-1.3.4 kivymd-0.104.2
```

少し1.3.4とあるバージョンが気になりましたが、一旦はインストールできた
ようです。まずは第一段階の任務完了となりました。

## お試し

今回はこの章を試すというのは、ありはしますが臨機応変に試していくという
ことでお試しというお題を付けています。

とりあえず、インストールはしたけどライブラリに不備があって動かないという
ことがあれば一大事ですので(まず考えられはしませんが)、試しに以前動かした
ものを動かしてみます。

自分の手元にはIcon Definitions篇で試したicon.pyがあるので、それを
みてみたいと思います。なんのこっちゃという方は以下リンクを見てもらえれば
と思います。

https://qiita.com/virty/items/97499128a205113431d5

### 結果①(icon.py)

#### 出力メッセージ

```text
$ python icon.py 
[INFO   ] [Logger      ] Record log in /UsersFolder/.kivy/logs/kivy_21-09-11.txt
[INFO   ] [Kivy        ] v2.0.0

(略)

[INFO   ] [KivyMD      ] 0.104.2, git-bc7d1f5, 2021-06-06 (installed at "/UsersFolder/.pyenv/versions/3.7.6/lib/python3.7/site-packages/kivymd/__init__.py")

(略)

[INFO   ] [Base        ] Start application main loop
[INFO   ] [Base        ] Leaving application in progress...
```

メッセージは問題ないようです。

#### 実行結果

![151.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82826/1e0214ba-5089-2f04-158a-3bce7bccad74.png)

![152.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82826/46394ff5-fbcd-8f26-5450-f34fe0fa43b2.png)

全然問題ありませんでしたね。最初は詰まるんじゃねみたいに疑ってごめんなさい。

## お試し2

最初の方で言っていた以下の3点もここで確認を取りたいと思います。

* ProgressBar
* Slider(Customのみ)
* Spinner(色)

どうなっているか確認してみましょう。

### 結果②(xxxiv/customcolor_indeterminate_progressbar.py)

まずはProgressBarからです。こちらは以下リンクの「With custom color」と
「Indeterminate」を組み合わせたコードを実行しています。こちらはここに書くと
長くなってしまうので、上記節の名前にもあるところようにGitHubへコードを上げて
おくのでそちらをご参照ください。色々自分で書いて試してみるのもよいかもしれません。

#### 実行結果

![153.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82826/e5bec7f9-391f-02c7-a150-27e4379b2b55.gif)

なんということでしょう。改善されているではありませんか。
という感じでさくさく見ていきましょう。ちなみに余談ですが、
単にdeterminateモードだとバーが全て埋め尽くされる挙動が
伺えました。これは試してもらったほうがいいかもしれません。

### 結果③(xxviii/slider_customcolor.py)

続いて、Slider Componentとなります。
こちらは以前にGitHubで配置していたコードとなります。詳細の方は以下をご参照
してもらえればと思います。

https://qiita.com/virty/items/a0aa7030d9e3d0ddf7c6

ただし、注意点が1つありマニュアルから経緯は忘れていましたが、少し変更をして
います。具体的には以下のようになります。

```diff
- value: 40
- color: app.theme_cls.accent_color
+ value: 50
+ color: 0, 0, 1, 1
```

おそらく自分でカスタムできるかなみたいに軽く修正したのだと思います。

#### 実行結果

![154.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82826/19393afa-01ca-55ff-ad9e-f0ea9285948e.png)

こちらも問題ない結果となりましたね。少し個人的な感想になりそうですが、
紫に近い青色が表示されています。

### 結果④(xxix/spinner.py)

最後にSpinnerを見てみます。
こちらについては先ほどと同様、以前に試していたコードを再度引っ張りだして
みましょう。なければチュートリアルからSpinnerページの「Spinner palette」を
実装してみるのも手ではあります。

#### 実行結果

![155.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82826/61bdd3dd-42a4-00b8-36d7-8114d1acacb5.gif)

最初少し止まっていることもありますが(動画撮るのヘタですみません)、ちゃんと
動いているのは間違いありません。すべてバッチリでしたね。

## まとめ

さぁ、いかがだったでしょうか。

バージョンアップするのにそれほど苦労することはないということが分かられたら、
私からは何も言うことはありません。もっとこうすればいいのにということもある
かと思われますが、それは次回に持ち越しということで。
※ 「pip install -U ~」を使えば1コマンドでことは足りそうです

ということで来週からは一旦少し戻って、冒頭にもある通りMDSwiper篇からリスタート
したいと思います。あと8個なので、期間としては2ヶ月くらいかな。

それでは、来週もお楽しみにー

と言いたかったところですが、少し留意事項があります。他のPythonとかのバージョン
や環境のことですね。2回目の投稿のときにこのような環境でやっていくと宣言をしてい
ました。

    [開発環境]
    macOS Mojave 10.14.6

    [バージョンなど]
    Python 3.7.6
    Kivy              2.0.0
    kivymd            0.104.1

kivymdだけのバージョンを変更かと思いきや、macOSのバージョンも変わっていることを
お伝えできていませんでした。完全に忘れていました、すみません。あと、いつ変えたかも
忘れたw
\# まぁOSのバージョンがそれほど影響してくるとは思いませんではい

ということで一旦以下のように変更点があります。今後はこのようになると思ってもらえれば
と思います。

```diff
- macOS Mojave 10.14.6
- kivymd            0.104.1
+ macOS Big Sur 11.2.3
+ kivymd            0.104.2
```

はい、以上となります。
ということで改めて、来週もよろしくお願いしまーす。

それでは、ごきげんよう。

## 参照

> Components » ProgressBar
> https://kivymd.readthedocs.io/en/latest/components/progressbar/

> Kivy MDDatePicker - TypeError: __init__() missing 1 required positional argument: 'callback'
> https://stackoverflow.com/questions/66706415/kivy-mddatepicker-typeerror-init-missing-1-required-positional-argument