Python入門者必見!入力フォームの作り方と応用例10選

Pythonで作る入力フォームのイメージ図 Python
この記事は約15分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればサンプルコードを活用して機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

今回は、Pythonを始めたばかりの方に必見の情報を解説していきます。

Pythonの入力フォームの作り方、詳細な使い方、注意点、そしてカスタマイズ方法を徹底的に解説します。

それだけでなく、実用的な応用例とそのサンプルコードも10個紹介します。

この記事を読めばPythonの入力フォームについて理解を深め、あなた自身のプロジェクトに役立てることができるでしょう。

●Pythonとは

Pythonは、シンプルで読みやすいコードを書くことができる人気の高いプログラミング言語です。

教育や科学研究、ウェブ開発、データ分析など、幅広い用途で使われています。

○Pythonの基本的な特徴

Pythonは、読みやすさが特徴で、そのために多くの初心者がこの言語からプログラミングを始めます。

また、Pythonはオープンソースであり、世界中の開発者がツールやライブラリを作成し、共有しています。

その結果、Pythonではさまざまなタスクを効率よく処理することが可能になっています。

●Pythonにおける入力フォームとは

入力フォームは、ユーザーがデータを入力するためのツールです。

Pythonでは、コンソールアプリケーションでの簡単な入力から、ウェブアプリケーションでのフォーム入力まで、さまざまな形式の入力フォームを作成することができます。

●Pythonでの入力フォームの基本的な作り方

Pythonで最も基本的な入力フォームの作り方は、input()関数を使う方法です。

input()関数はユーザーにテキスト入力を求め、その入力を文字列として返します。

○サンプルコード1:基本的な入力フォーム

name = input("お名前を入力してください:")
print("こんにちは、" + name + "さん!")

このコードでは、input関数を使ってユーザーから名前を入力してもらい、その名前を出力しています。

この例では、まず”お名前を入力してください:”というメッセージとともにユーザーの入力を待ち、入力があるとそれを変数nameに格納します。

そして、その名前を使って挨拶を出力しています。

このコードを実行すると、ユーザーが名前を入力するプロンプトが表示されます。

例えば、ユーザーが”Taro”と入力すれば、”こんにちは、Taroさん!”という出力が得られます。

●Pythonでの入力フォームの詳細な使い方

さて、基本的な入力フォームの作り方を理解したところで、より詳細な使い方に進んでみましょう。

○サンプルコード2:複数項目の入力フォーム

ここでは、複数の項目から成る入力フォームの作成方法をご紹介します。

例えば、ユーザー名とパスワードの入力を求めるログインフォームなどが考えられます。

print("ユーザー名とパスワードを入力してください。")
username = input("ユーザー名:")
password = input("パスワード:")
print(f"ユーザー名:{username}、パスワード:{password}でログインします。")

このコードでは、input関数を二度使用しています。

最初はユーザー名の入力を、次にパスワードの入力を求めています。

それぞれの入力結果は、usernameとpasswordという変数に格納され、その値は最終的に出力されます。

このコードを実行すると、ユーザーは2つの入力フィールドに値を入力し、その結果が表示されます。

○サンプルコード3:プルダウンメニューのある入力フォーム

次に、プルダウンメニューを使用した入力フォームの作成方法について解説します。

ただし、Pythonの基本的な機能だけではプルダウンメニューを作成することはできません。

そこで、ここではTkinterというGUIライブラリを使用します。

from tkinter import *
from tkinter.ttk import *

window = Tk()
window.title("プルダウンメニュー")

label = Label(window, text="好きな色を選んでください:")
label.grid(column=0, row=0)

combo = Combobox(window)
combo['values'] = ("赤", "青", "黄")
combo.current(1)
combo.grid(column=1, row=0)

window.mainloop()

このコードでは、Tkinterというライブラリを使ってプルダウンメニューを含むウィンドウを作成しています。

Tkinterは、PythonでGUIアプリケーションを作成するための標準ライブラリで、非常に強力で使いやすいツールです。

プルダウンメニューはComboboxというウィジェットを用いて作成され、その中にはユーザーが選択できる値が入っています。

この例では、”赤”、”青”、”黄”の3つの選択肢が用意されています。

このコードを実行すると、新しいウィンドウが開き、そこには選択肢が表示されます。

●Pythonでの入力フォームの注意点

Pythonで入力フォームを扱う際の注意点について述べます。

ここでは特に、入力チェックとエラーハンドリングの2つの重要な観点に焦点を当てます。

○入力チェック

入力フォームを利用する際、ユーザーからの入力が常に期待通りの形式や範囲であるとは限りません。

そのため、ユーザーからの入力をそのままプログラム内で利用する前に、その入力が適切な形式や範囲にあることを確認する必要があります。これを入力チェックと言います。

例えば、年齢を入力する欄であれば、整数かつ一定の範囲内の値が入力されることが期待されます。

○エラーハンドリング

入力チェックで不適切な入力を検出した場合、またはその他のエラーが発生した場合に、適切に対応する方法をエラーハンドリングと言います。

エラーが発生した場合には、プログラムがクラッシュするのではなく、適切なエラーメッセージを表示し、可能であればユーザーに再入力の機会を与えるなどの対応が求められます。

これらの点に注意しながら、Pythonで入力フォームを扱うことで、より安全でユーザーフレンドリーなプログラムを作成することができます。

●Pythonでの入力フォームの詳細な対処法

入力チェックとエラーハンドリングの具体的な方法について説明します。

○サンプルコード4:入力チェックの例

ここでは、入力チェックの一例として、年齢が整数かつ一定の範囲内(例えば0~120歳)にあることを確認するコードをご紹介します。

while True:
    try:
        age = int(input("あなたの年齢を入力してください:"))
        if 0 <= age <= 120:
            print(f"あなたの年齢は{age}歳ですね。")
            break
        else:
            print("年齢は0~120の間で入力してください。")
    except ValueError:
        print("整数を入力してください。")

このコードでは、ユーザーからの入力をint関数で整数に変換しようと試みています。

もしユーザーが整数以外の何か(文字列や小数など)を入力した場合、int関数はValueErrorを送出します。

この例外はexcept節でキャッチされ、ユーザーには”整数を入力してください。”というメッセージが表示されます。

一方、ユーザーが整数を入力した場合、その値が0~120の範囲内にあるかどうかがチェックされます。

範囲外の場合は適切なエラーメッセージが表示され、再度入力を求められます。

○サンプルコード5:エラーハンドリングの例

ここでは、エラーハンドリングの一例として、入力された整数が2で割り切れるかどうかを判定するコードを見てみましょう。

もしユーザーが整数以外の値を入力した場合はエラーメッセージを表示し、再度入力を求めます。

while True:
    try:
        number = int(input("整数を入力してください:"))
        if number % 2 == 0:
            print(f"{number}は偶数です。")
            break
        else:
            print(f"{number}は奇数です。")
            break
    except ValueError:
        print("整数を入力してください。")

このコードでも、ValueErrorを使って整数以外の入力をキャッチしています。

入力が適切な整数であれば、その値が偶数か奇数かを判定し、結果を表示します。

●Pythonでの入力フォームのカスタマイズ方法

Pythonでの入力フォームをより使いやすく、また見栄えを良くするためにカスタマイズする方法について説明します。

○サンプルコード6:カスタムデザインの入力フォーム

ここでは、Tkinterを使用して、色やフォントをカスタマイズした入力フォームを作成する例を紹介します。

from tkinter import *
from tkinter.ttk import *

window = Tk()
window.title("カスタムデザインの入力フォーム")

label = Label(window, text="あなたの名前を入力してください:", font=("Arial", 14), fg="blue")
label.grid(column=0, row=0)

txt = Entry(window,width=10)
txt.grid(column=1, row=0)

window.mainloop()

このコードでは、ラベルの文字を青色にし、Arialフォントの14ポイントで表示しています。

このように、テキストの色やフォントは、Label関数の引数として指定できます。

また、Entry関数で作成されるテキストボックスの幅は、width引数で指定できます。

これまでに紹介したような基本的な技術を組み合わせることで、Pythonを使ってさまざまな形式の入力フォームを作成し、それらをカスタマイズすることが可能です。

●Pythonでの入力フォームの応用例

Pythonで作成した入力フォームは、データベースへのデータの入力やファイルのアップロード、APIとの連携など、多岐にわたる場面で使用することができます。

それでは、具体的な応用例をいくつか紹介していきます。

○サンプルコード7:データベースに接続する入力フォーム

ここでは、入力フォームを使ってユーザーからデータを収集し、そのデータをデータベースに保存する例を紹介します。

Pythonにはsqlite3というライブラリがあり、これを使用することでSQLiteという軽量なデータベースを操作することができます。

import sqlite3

conn = sqlite3.connect('test.db')
c = conn.cursor()
c.execute('''CREATE TABLE users
             (name text, age integer)''')

while True:
    try:
        name = input("あなたの名前を入力してください:")
        age = int(input("あなたの年齢を入力してください:"))
        c.execute("INSERT INTO users VALUES (?, ?)", (name, age))
        conn.commit()
        print("データベースに保存しました。")
        break
    except ValueError:
        print("年齢は整数を入力してください。")

このコードでは、まずsqlite3を使ってデータベースに接続し、usersというテーブルを作成しています。その後、ユーザーから名前と年齢の入力を求め、それをデータベースのusersテーブルに保存しています。

その際に、名前と年齢をタプルの形でデータベースに渡しています。

エラーハンドリングにより、年齢の入力が整数でない場合にはエラーメッセージを表示し、再度入力を求めます。

以上の操作を通じて、ユーザーが入力したデータを効率よくデータベースに保存することが可能となります。

○サンプルコード8:ファイルアップロードのための入力フォーム

ここでは、ユーザーが自身のファイルをサーバーにアップロードできるような入力フォームを作成する例を示します。

このような機能は、画像アップロードなどの機能を持つウェブアプリケーションを作成する際に有用です。

ここでは、Flaskというウェブフレームワークと、その中のrequestオブジェクトを使用します。

from flask import Flask, request

app = Flask(__name__)

@app.route('/', methods=['GET', 'POST'])
def upload_file():
    if request.method == 'POST':
        f = request.files['file']
        f.save(f.filename)
        return 'ファイルをアップロードしました。'

    return '''
    <!doctype html>
    <html>
    <body>
    <form method=post enctype=multipart/form-data>
      <input type=file name=file>
      <input type=submit value=アップロード>
    </form>
    </body>
    </html>
    '''

if __name__ == '__main__':
    app.run(debug=True)

このコードでは、HTTPメソッドがPOSTのとき(すなわち、ユーザーがファイルをアップロードし、その情報がサーバーに送信されたとき)、request.filesからアップロードされたファイルを取得し、そのファイルをサーバー上に保存しています。

もしHTTPメソッドがGETのとき(つまり、ユーザーがウェブページを初めて訪れたとき)、アップロードを行うためのHTMLフォームを表示します。

なお、HTMLフォームではmultipart/form-dataというエンコーディングタイプを指定することで、ファイルのアップロードを可能にしています。

また、inputタグでtype=fileを指定することで、ファイル選択ダイアログを表示します。

○サンプルコード9:動的に変化する入力フォーム

ここでは、ユーザーの選択に応じて動的にフォームの内容が変化する入力フォームを作成します。

このようなフォームは、ユーザーの選択によって次に表示する選択肢が変わるような場合に利用できます。

from tkinter import *

def show_selected_var():
    print("selected:", selected_var.get())

window = Tk()
selected_var = StringVar()

rb1 = Radiobutton(window, text="Option1", variable=selected_var, value="1", command=show_selected_var)
rb2 = Radiobutton(window, text="Option2", variable=selected_var, value="2", command=show_selected_var)

rb1.pack()
rb2.pack()

window.mainloop()

このコードでは、選択されたラジオボタンに応じて表示が変化します。

具体的には、ラジオボタンの選択が変更されると、選択されたラジオボタンの値がselected_varに格納され、show_selected_var関数が呼び出されて選択された値が出力されます。

このようにして、ユーザーの選択によって動的に内容を変更することができます。

最後に、APIを活用した入力フォームの作成について解説します。

○サンプルコード10:APIを活用した入力フォーム

ここでは、ユーザーの入力に基づいて外部のAPIを呼び出し、その結果を表示する入力フォームを作成します。

このような入力フォームは、天気予報サービスや株価情報など、外部サービスの提供する情報を活用する際に利用できます。

import requests
from tkinter import *

def get_weather():
    city = city_entry.get()
    response = requests.get(f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid=your_api_key")
    weather = response.json()
    label['text'] = f"天気:{weather['weather'][0]['description']}, 温度:{weather['main']['temp']}K"

window = Tk()

city_entry = Entry(window)
city_entry.pack()

button = Button(window, text="天気を取得", command=get_weather)
button.pack()

label = Label(window)
label.pack()

window.mainloop()

このコードでは、ユーザーが都市名を入力し、”天気を取得”ボタンを押すと、その都市の天気情報をOpenWeatherMapのAPIを通じて取得し、その結果をラベルに表示します。

都市名はEntryウィジェットで入力を受け付け、ボタンが押されるとget_weather関数が呼び出されます。

この関数内で、APIを呼び出し、取得したデータをパースして表示します。ここでは、天気の詳細と気温を表示しています。

このように、APIを活用した入力フォームを作成することで、ユーザーにとって有用な情報を提供することが可能となります。

まとめ

以上が、Pythonでの入力フォームの作り方とその詳細な使い方、さらには注意点やカスタマイズ方法、応用例について解説した記事となります。

Pythonでの入力フォーム作成は、初心者でも容易に挑戦できるトピックであり、さらにはその応用力が非常に高いテーマでもあります。

実際のアプリケーション開発において、ユーザーの入力を適切に取り扱うための基本的なスキルを習得することができるでしょう。

本記事では、10個のサンプルコードを提供し、それぞれのコードで何が行われているのかを詳細に解説しました。

それぞれのコードは、初心者でも理解できるようになっていますので、ぜひ挑戦してみてください。

そして、これらのサンプルコードを通じて、Pythonの基本的な知識を深め、入力フォームの作り方を習得することができたなら、次はそれを自分自身の問題解決に活用してみてください。

プログラミングの学習は、自分自身の手でコードを書くことで、理解が深まることでしょう。