「5分でPythonとTkinterを使用してシンプルなユーザーフォームを作成する-初心者ガイド」
5分でPythonとTkinterを使用してシンプルなユーザーフォームを作成する-初心者ガイド
今日では、すべてのビジネスが「デジタル化」することがトレンドになっています。小規模なビジネスでも大規模なビジネスでも、情報を手動で収集するよりもアプリケーションを使用する方が便利です。また、プロフェッショナルな印象を与えます。医師の店舗であるか、食料品店であるかに関係なく、お客様が何度も訪れることを期待しています。
このチュートリアルでは、Pythonと人気のあるGUIツールキットであるTkinterを使用して、非常にシンプルなユーザーフォームを作成する方法を紹介します。このブログの最後までに、さまざまなアプリケーション用の登録フォームを開発するためのスキルを身につけることができます。
私は機械学習のプロジェクトでさまざまなGUIを作成するのが好きです。エンドユーザーとコミュニケーションするための表現の自由を与えてくれます。自分の機械学習プロジェクトのためにGUIを自分で作成することは、誰よりも自分自身の物語を語っているような気がします。
PythonでGUIを構築するために使用できるライブラリは多数あります。その中でも有名なものには、PyQt5、Kivy、PySimpleGUI、Tkinterなどがあります。私は初心者にはTkinterが最適だと考え、シンプルで基本的なGUIライブラリとして使用しています。ただし、GUIのスタイリングに関してはいくつかの制限がありますので、短期プロジェクトには使用しています。
私もWebアプリのファンですが、アプリを公開したくない場合はWebサーバーが必要です。Streamlitを使用してWebアプリを作成するチュートリアルはこちらで見つけることができます。
それに代わり、Tkinterを使用してGUIを作成し、実行可能ファイルに変換してファイルを共有するだけでエンドユーザーに配布するのが簡単だと思います。時間とコストの面でも迅速かつ経済的です。
事前準備:
システムにPythonとTkinterがインストールされている必要があります。Tkinterがインストールされていない場合は、Anacondaプロンプトで次のコマンドを使用してインストールできます:
pip install tk
ステップ1:必要なライブラリのインポート
いつものように、プロジェクトに必要なすべてのライブラリをインポートする必要があります。このシンプルなプロジェクトでは、tkinterとopenpyxlパッケージが必要です。必要に応じてコードを拡張することができます。
import openpyxlfrom tkinter import *from tkinter import messagebox
ステップ2:tkinterウィンドウの初期化
ここでは、rootという名前を付けましたが、任意の名前を付けることができます。‘root.title()’内で必要に応じてタイトルを変更することができます。‘root.geometry()’はTkinterウィンドウのサイズを定義します。最初のパートは幅を示し、2番目のパートは高さを示します。必要に応じて変更することができます。ここでは、正方形のウィンドウを定義しています。
また、tkinterのアイコンも変更することができます。ただし、このブログではその内容については説明しません。
# Create the main tkinter windowroot = Tk()root.title("登録フォーム")root.geometry('300x300')
ステップ3:ラベルとエントリーフィールドの作成
First Name、Last Name、Email、およびMobile Numberのフィールドを作成しました。必要に応じてフィールドを追加または削除することができます。
Checkボタン、Radioボタン、メニュー、コンボボックスなどを追加してユーザーフォームを拡張することができます。
# Create labels and entry fields for each inputfirst_name_label = Label(root, text="名前:")first_name_label.pack()first_name_entry = Entry(root)first_name_entry.pack()Last_name_label = Label(root, text="姓:")Last_name_label.pack()Last_name_entry = Entry(root)Last_name_entry.pack()email_label = Label(root, text="メール:")email_label.pack()email_entry = Entry(root)email_entry.pack()Mobile_label = Label(root, text="携帯番号:")Mobile_label.pack()Mobile_entry = Entry(root)Mobile_entry.pack()
ラベルとエントリーフィールドの配置には、pack、grid、placeなどの異なる方法を使用することができます。
pack()は、水平および垂直のボックスにウィジェットを配置します。ボックスは左、右、上、下の位置に制限されています。各ボックスはお互いにオフセットおよび相対的です。他の方法に比べて制限が高いと感じます。
grid()は、スプレッドシートのような二次元の行と列のグリッドにウィジェットを配置します。この方法では位置のロジックを理解するのは容易ですが、行と列の間のスペースを制御するのは難しいです。
place()は、xおよびyの絶対座標を使用してウィジェットを二次元のグリッドに配置します。位置はxおよびy座標を定義するか、相対的なxおよびy座標を定義することによって定義できます。
私のお気に入りは「place()」メソッドです。必要な場所に正確に配置できるため、このブログでは初心者向けにガイドをシンプルにするために「pack()」メソッドを使用しています。
別のブログで、各メソッドの違いについて詳しく説明するかもしれません。
ステップ4:エントリーフィールドからデータを取得する関数を作成する
ここでは、GUIからデータを取得し、将来の利用のためにデータをMicrosoft Excelに保存したいと思います。データを変更して保存方法を変更することもできます。
def register(): # フォームからユーザー入力を取得 first_name = first_name_entry.get() Last_name = Last_name_entry.get() email = email_entry.get() Mobile = Mobile_entry.get() # ユーザー入力で新しい行を作成 new_row = [first_name, Last_name, email,Mobile] # 新しい行をExcelシートに追加 workbook = openpyxl.load_workbook("registration_data.xlsx") sheet = workbook.active sheet.append(new_row) workbook.save("registration_data.xlsx") messagebox.showinfo("成功", "登録が成功しました!")
ステップ5:送信ボタンを作成してメインループを実行する
register_button = Button(root, text="登録", command=register)register_button.pack()root.mainloop()
これで、登録用のユーザーフォームGUIを作成するための最後のステップです。このコードをエンドユーザーが実行できる実行可能ファイルとしてパッケージ化するか、さらに洗練されたアプリケーションに拡張してさまざまな素敵な機能を備えた完全なアプリケーションにすることができます。
使用するための完全なコード:
import openpyxlfrom tkinter import *from tkinter import messageboxdef register(): # フォームからユーザー入力を取得 first_name = first_name_entry.get() Last_name = Last_name_entry.get() email = email_entry.get() Mobile = Mobile_entry.get() # ユーザー入力で新しい行を作成 new_row = [first_name, Last_name, email,Mobile] # 新しい行をExcelシートに追加 workbook = openpyxl.load_workbook("registration_data.xlsx") sheet = workbook.active sheet.append(new_row) workbook.save("registration_data.xlsx") messagebox.showinfo("成功", "登録が成功しました!")# メインのtkinterウィンドウを作成root = Tk()root.title("登録フォーム")root.geometry('300x300')# 各入力に対してラベルとエントリーフィールドを作成first_name_label = Label(root, text="名前:")first_name_label.pack()first_name_entry = Entry(root)first_name_entry.pack()Last_name_label = Label(root, text="姓:")Last_name_label.pack()Last_name_entry = Entry(root)Last_name_entry.pack()email_label = Label(root, text="メール:")email_label.pack()email_entry = Entry(root)email_entry.pack()Mobile_label = Label(root, text="携帯電話:")Mobile_label.pack()Mobile_entry = Entry(root)Mobile_entry.pack()register_button = Button(root, text="登録", command=register)register_button.pack()root.mainloop()
これは非常に基本的なコードですので、実際の使用例にはデータ検証技術を使用することをお勧めします。
おめでとうございます!最初のユーザーフォームが完成しました。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles