カテゴリ: Python 更新日: 2026/06/23

PythonのKivyでモバイル向けGUIアプリを作る方法!初心者でも簡単スタート

PythonのKivyでモバイル向けGUIアプリを作成する方法
PythonのKivyでモバイル向けGUIアプリを作成する方法

先生と生徒の会話形式で理解しよう

生徒

「先生、スマホ向けのアプリってPythonでも作れるんですか?」

先生

「はい、PythonではKivyというライブラリを使うと、簡単にモバイルアプリを作ることができます。」

生徒

「Kivyって何ですか?難しそうですね…」

先生

「Kivyは、Pythonでボタンやテキスト入力などのGUIを作れるライブラリです。パソコンだけでなく、iOSやAndroidでも動くアプリを作ることができます。」

生徒

「なるほど!まず何を準備すればいいですか?」

先生

「まずはPythonをインストールして、Kivyをpipでインストールしましょう。」

1. Kivyのインストール方法

1. Kivyのインストール方法
1. Kivyのインストール方法

Kivyを使うには、Pythonが必要です。Pythonがインストールできたら、コマンドプロンプトやターミナルで次のコマンドを実行してください。

 pip install kivy

これでKivyがパソコンにインストールされます。Python初心者でも、コピーして貼り付けるだけでOKです。

2. 最初のKivyアプリを作ってみよう

2. 最初のKivyアプリを作ってみよう
2. 最初のKivyアプリを作ってみよう

では、簡単なボタンを表示するアプリを作ってみます。Pythonファイルを作成して、次のコードを入力してください。

 from kivy.app import App from kivy.uix.button import Button
class MyApp(App):
def build(self):
return Button(text="こんにちは!")

if name == "main":
MyApp().run()

このコードを実行すると、スマホ風のボタンが表示されます。「こんにちは!」と書かれたボタンが画面に出るだけのシンプルなアプリです。

3. ボタンを押したときに動作を追加する

3. ボタンを押したときに動作を追加する
3. ボタンを押したときに動作を追加する

次はボタンを押したら文字が変わるようにしてみます。イベント処理という考え方を使います。

 from kivy.app import App from kivy.uix.button import Button
class MyApp(App):
def build(self):
btn = Button(text="押してね!")
btn.bind(on_press=self.change_text)
return btn

def change_text(self, instance):
    instance.text = "ありがとう!"
if name == "main":
MyApp().run()

ここでは、bindという命令でボタンが押されたときの動作を設定しています。

4. レイアウトを使って複数の部品を配置する

4. レイアウトを使って複数の部品を配置する
4. レイアウトを使って複数の部品を配置する

アプリにはボタンだけでなく、ラベルや入力欄も置きたいですね。その場合はBoxLayoutなどのレイアウトを使います。

 from kivy.app import App from kivy.uix.button import Button from kivy.uix.label import Label from kivy.uix.boxlayout import BoxLayout
class MyApp(App):
def build(self):
layout = BoxLayout(orientation='vertical')
layout.add_widget(Label(text="ラベル表示"))
layout.add_widget(Button(text="ボタン1"))
layout.add_widget(Button(text="ボタン2"))
return layout

if name == "main":
MyApp().run()

この例では、縦方向にラベルと2つのボタンが並びます。レイアウトを使うことで画面をきれいに整理できます。

5. テキスト入力を使った簡単なフォームを作る

5. テキスト入力を使った簡単なフォームを作る
5. テキスト入力を使った簡単なフォームを作る

ユーザーに文字を入力してもらうには、TextInputを使います。次のコードは、入力した文字をボタンを押すと表示する例です。

 from kivy.app import App from kivy.uix.boxlayout import BoxLayout from kivy.uix.textinput import TextInput from kivy.uix.button import Button from kivy.uix.label import Label
class MyApp(App):
def build(self):
layout = BoxLayout(orientation='vertical')
self.label = Label(text="ここに入力文字が表示されます")
self.text_input = TextInput(hint_text="文字を入力")
btn = Button(text="表示")
btn.bind(on_press=self.show_text)
layout.add_widget(self.text_input)
layout.add_widget(btn)
layout.add_widget(self.label)
return layout

def show_text(self, instance):
    self.label.text = self.text_input.text
if name == "main":
MyApp().run()

このコードを使うと、簡単な入力フォームアプリが作れます。スマホ向けアプリ開発の基本が身につきます。

6. 画面サイズやデザインを調整する方法

6. 画面サイズやデザインを調整する方法
6. 画面サイズやデザインを調整する方法

Kivyでは、size_hintpos_hintを使うと、ボタンやラベルの大きさや位置を調整できます。

 from kivy.app import App from kivy.uix.button import Button
class MyApp(App):
def build(self):
btn = Button(text="中央に配置", size_hint=(0.5, 0.2),
pos_hint={'center_x':0.5, 'center_y':0.5})
return btn

if name == "main":
MyApp().run()

これでボタンが画面中央に配置され、画面サイズに応じてボタンの大きさも変わります。レスポンシブ対応の考え方です。

7. まとめると

7. まとめると
7. まとめると

今回の内容では、PythonのKivyを使ってモバイル向けGUIアプリを作る基本を学びました。Kivyのインストール、ボタンやラベル、TextInput、イベント処理、レイアウトの使い方、画面サイズの調整方法など、初心者でも簡単にアプリを作れる手順を紹介しました。

このステップを踏めば、オリジナルの簡単なスマホアプリを作ることができます。KivyはPythonの知識があれば直感的に扱えるので、これからモバイルアプリ開発に挑戦する方におすすめです。

まとめ

まとめ
まとめ

今回の記事では、PythonのKivyを使ってモバイル向けGUIアプリを開発する方法を初心者向けに解説しました。まず、PythonとKivyのインストール手順から始め、簡単なボタン表示アプリの作成方法を確認しました。ボタン一つを画面に表示するだけでも、PythonでGUIアプリを作る楽しさが体験できます。その後、ボタンに動作を追加するイベント処理の方法を学び、ボタンを押すことで文字が変わる動作を実装しました。これにより、ユーザーの操作に応じてアプリが動く仕組みを理解できます。

次に、BoxLayoutなどのレイアウトを使って複数の部品を配置する方法を学びました。ラベルやボタン、入力欄を整理して配置することで、見やすい画面デザインが可能になります。さらに、TextInputを用いた簡単なフォーム作成例を紹介し、ユーザーからの入力を取得して表示する方法も解説しました。このステップを通じて、スマホ向けアプリでよく使う入力・表示の基本パターンを身につけることができます。

また、画面サイズや位置の調整についても触れ、size_hintやpos_hintを活用してボタンやラベルをレスポンシブに配置する方法を学びました。スマホやタブレットなど様々な画面サイズに対応するための基本技術です。これらの知識を組み合わせることで、初心者でも見栄えの良い、操作性の高いモバイル向けアプリを開発できるようになります。

最終的に、Kivyを使ったモバイルGUIアプリ開発の一連の流れを体験することで、Pythonでアプリを作る楽しさと可能性を実感できました。これからは、今回学んだボタン操作、レイアウト配置、入力フォーム、画面調整といった基礎を応用し、オリジナルアプリを自由に設計することが可能です。例えば、簡単なメモ帳アプリやタスク管理アプリなど、日常生活に役立つスマホアプリも作れるようになります。

サンプルプログラムまとめ

ここまでの内容を統合した、簡単なKivyアプリのサンプルです。ボタン操作、入力欄、レイアウトを組み合わせています。

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.uix.textinput import TextInput

class MyApp(App):
    def build(self):
        layout = BoxLayout(orientation='vertical', spacing=10, padding=10)
        
        self.label = Label(text="ここに入力文字が表示されます")
        self.text_input = TextInput(hint_text="文字を入力")
        
        btn_show = Button(text="表示")
        btn_show.bind(on_press=self.show_text)
        
        btn_clear = Button(text="クリア")
        btn_clear.bind(on_press=self.clear_text)
        
        layout.add_widget(self.text_input)
        layout.add_widget(btn_show)
        layout.add_widget(btn_clear)
        layout.add_widget(self.label)
        
        return layout

    def show_text(self, instance):
        self.label.text = self.text_input.text

    def clear_text(self, instance):
        self.text_input.text = ""
        self.label.text = "ここに入力文字が表示されます"

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

このサンプルでは、TextInputに入力した文字を「表示」ボタンでラベルに表示し、「クリア」ボタンでリセットする動作を実装しています。BoxLayoutで縦方向に整列しているため、見やすく操作しやすいアプリとなっています。

先生と生徒の振り返り会話

生徒

「先生、Kivyを使うとボタンや入力欄を自由に配置できるんですね!」

先生

「そうです。BoxLayoutやsize_hint、pos_hintを使えば、画面サイズに応じた配置も簡単にできます。」

生徒

「TextInputも使えるんですね。入力内容をボタンで表示するのも面白いです。」

先生

「はい。イベント処理を理解すれば、ボタンや入力欄を組み合わせた実用的なアプリも作れます。今回の内容を応用すると、メモ帳や簡単な計算アプリも作れるようになります。」

生徒

「なるほど、Pythonの知識があればスマホアプリも作れるんですね。Kivyを使って自分だけのアプリを作るのが楽しみです!」

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

関連記事:
Python のGUIプログラミングの記事一覧へ
新着記事
New1
Python
Pythonの整数と浮動小数点数の違いとは?数値型の基本を解説
New2
Python
Pythonで文字列をリストに変換する方法!split()とjoin()の使い方
New3
Python
Pythonのbreakとcontinueの違いとは?ループの制御方法をマスター
New4
Python
Pythonのstartswith()・endswith()の使い方!文字列の前後をチェック
人気記事
No.1
Java&Spring記事人気No1
PHP
PHPの特殊文字とエスケープ処理を完全ガイド!初心者向けにhtmlspecialcharsとhtmlentitiesをやさしく解説
No.2
Java&Spring記事人気No2
PHP
PHP の文字列のフォーマット(sprintf, printf)
No.3
Java&Spring記事人気No3
Python
Pythonのクロージャー(Closure)とは?関数内関数とnonlocalの活用
No.4
Java&Spring記事人気No4
Python
Pythonで文字列を置換する方法!replace()の使い方と正規表現の活用
No.5
Java&Spring記事人気No5
Python
Pythonでリストを分割する方法(スライス / split() / itertools)
No.6
Java&Spring記事人気No6
Python
Pythonで経過時間を測る方法をやさしく解説!初心者向けtime.perf_counterとtime.sleepの使い方
No.7
Java&Spring記事人気No7
Python
Pythonのstartswith()・endswith()の使い方!文字列の前後をチェック
No.8
Java&Spring記事人気No8
PHP
PHPの認証機能を実装する方法!初心者でもわかるログイン・ログアウト処理の基本