【初心者向け】KivyによるWindowsアプリ作成15 経費申請画面の作成その2

前回から引き続き、経費申請画面の修正を行っていきます。

特に今回は、申請ボタンを押したときの処理を実装し、経費申請画面を完成、すなわち、経費申請アプリの完成までもっていきたいと思います。

また、コードは例によってGitHubにアップしていますので、必要に応じてご参照下さい。

<スポンサーリンク>

申請ボタン押下時の処理の実装

実装を行う前に、申請ボタンを押したときにどのような処理を行おうとしているか、簡単に説明したいと思います。

ボタンを押すと、Pythonファイルが保存されているフォルダに「expense.txt」というファイルを作成し、そのファイルに申請画面上の4項目に入力された情報をタブ文字区切りで書き出します。また、次の入力ができるように、画面上の4項目全てをブランクにする、というのが実装したい処理です。なお、既に「expense.txt」が存在する状態で申請入力を行うと、そのファイルに入力内容を追記します。

それではさっそく処理を実装してみましょう。

Pythonファイル上のInputScreenクラスの中に、以下のようにsubmitButtonClickedというメソッドを定義します。

def submitButtonClicked(self):
        f = open("expense.txt", "a", encoding="shift-jis")
        sentence =""
        sentence += self.ids["text_emp"].text + "\t"
        sentence += self.ids["text_date"].text + "\t"
        sentence += self.ids["text_category"].text + "\t"
        sentence += self.ids["text_amount"].text + "\n"
        f.write(sentence)
        f.close()

        self.clearButtonClicked()

コードの内容を説明します。

まず、2行目ですが、「open(ファイル名, オプション, エンコーディング)」という構文で、任意のファイルを開くことができます

ファイル名には、アクセス対象のファイル名を指定します。

また、オプションにはファイルにアクセスする際のモードを指定しますが、今回指定している「a」とは「append」の略で、既存のファイル内容の最後に、データを追記する書き込みモードです。指定したファイルが存在しない場合は、新しくファイルが作成されます。ちなみにこのモードには他に、「w」(「write」の略で、既存ファイル内容を上書きする)や「r」(「read」の略で、ファイルに書き込みできず、読み込みのみ可能とする)があります。

そしてエンコーディングですが、文字通り、読み書きしたい文字のエンコーディングを指定します。Pythonにおけるデフォルトのエンコーディングは「UTF-8」というものですが、Windowsにて、メモ帳等の通常のエディタでテキストファイルを開いた時に、文字の読み書きで使われるデフォルトのエンコーディングは「Shift-JIS」というものです。そのため、今回は読み書きをShift-JISを使って行うことを明示します。

さらに、このopenで開いたファイルの参照を、fという変数に入れる、というのが2行目の処理です。

さて、これでファイルを開き、そのファイルにアクセスすることができるようになりましたので、ファイルに情報を書き込む処理を追加します。それが3~8行目の記述です。

3~7行目では、sentenceという変数に、4つのTextInputの入力内容をタブ文字「\t」を加えながら1つの文字列として構成していきます。最後だけ、改行「\n」を入れています。そして8行目で、開いたファイルにsentenceの内容を書き込んでいます。

続く9行目で、開いたファイルを閉じています。

あとは、入力内容を入力欄からすべて消去する処理を追加する必要がありますが、これは前回追加した、クリアボタンを押したときの処理が流用できます。それが11行目の記述です。

これで、ファイルへの書き込みを行うメソッドの定義が完了しました。

あとはKvファイルにて、申請ボタンにこのメソッドを紐づければ、ボタンを押したときにメソッドが実行されるようになりますね。

Button:
    text: "申請"
    color: 1, 1, 1, 1
    on_press: root.submitButtonClicked() #この行を追加

プログラム実行

それではここまでの実装内容の動作確認を行いましょう。

プログラムを実行し、アプリにログインして、適当な情報を入力します。

入力が終わったら申請ボタンを押してファイルへの書き込みを行い、もう1件適当な情報を入力して申請ボタンを押してみます。

ここで、Pythonファイルが保存されているフォルダの中を見てみて下さい。「expense.txt」というファイルが生成され、入力した2件がタブ区切りでファイルに記載されていれば、プログラムは正しく動作しています。

終わりに

だいぶ長くなってしまいましたが、経費申請アプリの作成自体は今回で終わりです。

ただ、現状では当然ながら、Kivyが導入されている環境でなければこのプログラムを実行することができません。

そこで次回はこのプログラムをKivy未導入の環境に配布/実行できるよう、Windowsの実行ファイルにしてみたいと思います。

<スポンサーリンク>

シェアする

フォローする