「5分でPythonとTkinterを使用してシンプルなユーザーフォームを作成する-初心者ガイド」

5分でPythonとTkinterを使用してシンプルなユーザーフォームを作成する-初心者ガイド

今日では、すべてのビジネスが「デジタル化」することがトレンドになっています。小規模なビジネスでも大規模なビジネスでも、情報を手動で収集するよりもアプリケーションを使用する方が便利です。また、プロフェッショナルな印象を与えます。医師の店舗であるか、食料品店であるかに関係なく、お客様が何度も訪れることを期待しています。

Thanks for the Photo by Faizur Rehman on Unsplash

このチュートリアルでは、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!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

機械学習

「機械学習手法を用いたJava静的解析ツールレポートのトリアージに関する研究」

この研究では、最新の機械学習技術を利用して、Java静的解析ツールからの効果的な発見の選別について詳しく探求しています

データサイエンス

クラウドを通じたデジタルトランスフォーメーションの推進

オラクルクラウドワールドの基調講演では、クラウドとAIを活用してデジタル変革の旅を進める業界リーダーたちが、経験とビジ...

AI研究

『広範な展望:NVIDIAの基調講演がAIの更なる進歩の道を指し示す』

ハードウェア性能の劇的な向上により、生成型AIが生まれ、将来の高速化のアイデアの豊富なパイプラインが構築され、機械学習...

AIニュース

「イギリスの全ての人に無料のAIトレーニングを提供しています」

「ジョニー・コットムは、一人でスタートアップを運営する際に必要なジャグリングの技術を知っています昨年、エコフレンドリ...

機械学習

アリババは、2つのオープンソースの大規模ビジョン言語モデル(LVLM)、「Qwen-VL」と「Qwen-VL-Chat」を発表しました

人工知能の絶え間なく進化する領域において、画像理解とテキストインタラクションのギャップを埋めることは常に課題となって...

人工知能

「ソフトウェアテストの革命化」

AIが自動ソフトウェアテストに与える深遠な影響を掘り下げ、その能力、利点、およびSQAの将来における持つ可能性について探求...