今回からPythonの標準ライブラリtkinterを使って、GUIアプリケーションを作成する方法を解説します。
Windowsでデスクトップアプリというと.NETなどが浮かぶ方も多いかと思いますが、Pythonで実装する方法もありますので紹介していきます。
tkinterとは
TkinterはGUI(グラフィカルユーザーインタフェース)を実装するためのPythonの標準ライブラリです。ボタンやテキストボックス、画像表示などユーザーがキーボードやマウスで操作可能なインタフェースを構築することができます。
公式ドキュメントは以下から参照できます。


tkinterのセットアップ
tkinterはPythonの標準ライブラリとなりますので、通常はインストール不要で即使用することができます。
しかしUbuntuだけはtkinterのパッケージが用意されておらず実行すると以下のようなエラーが発生します。
ModuleNotFoundError: No module named 'tkinter'
このようなエラーが発生したら、以下のコマンドでtkinterのパッケージをインストールしてください。
sudo apt-get install python3-tk

ウインドウを実装する方法
tkinterでGUIを作成する際、一番最初に実行するのがTkメソッドです。Tkメソッドを実行することにより、メインウィンドウが作成されます。
root = tk.Tk()
ウィンドウサイズを指定する場合はgeometryメソッドを使用します。引数にウィンドウサイズを指定します。
root.geometry("640x480")
ウィンドウのタイトルを表示する場合はtitleメソッドを使用します。引数にタイトルとして表示したい文字列を指定します。今回は「入力フォーム」と表示してみます。
root.title('入力フォーム')
最後にウィンドウ表示を継続するためのmainloopメソッドを実行します。mainloopメソッドを使用しないと、作成したウィンドウが一瞬で消えてしまいます。
root.mainloop()
作成したソースコード
実際に作成したソースコードは以下の通りです。
import tkinter as tk
#ウィンドウを作成
root = tk.Tk()
#ウィンドウサイズを指定
root.geometry("640x480")
#ウィンドウタイトルを指定
root.title('入力フォーム')
#ウィンドウ表示継続
root.mainloop()

実行結果
プログラムを実行した結果は以下の通りです。
指定したサイズでウィンドウが生成され、上部のバーにタイトル文字が表示されていることが確認できました。

フォーム上にウィジェットを配置する
tkinterではフォーム上に表示するオブジェクトのことをウィジェットと呼びます。ここからは作成したフォーム上にウィジェットを配置する方法について解説します。

画像のように作成したフォーム上にウィジェットを配置していくことで入力フォームなどの機能を構成することができます。
ラベル、テキストボックス、コンボボックス、ボタン
tkinterでGUIを作成する上で基本的なウィジェットとなるラベル、テキストボックス、コンボボックス、ボタンの実装方法を以下の記事で解説しています。
また、ウィジェットの配置場所をコントロールするフレームについても解説していますので、入力フォーム等を作成する際の参考にしてください。

図を描画するウィジェットcanvas
canvasウィジェットを使用することで、フォーム上に図を描画したり、画像を表示することが可能です。canvasウィジェットの使用方法を以下の記事で解説しています。

複数行のテキストを入力できるscrolledtest
フォーム上で複数行のテキストを入力したい場合はscrolledtestウィジェットを使って実装することができます。scrolledtestでは入力しているテキストの行数がテキストボックスの表示エリアを超えると自動的にスクロールバーが表示されますので、長文の入力が可能になります。
scrolledtextウィジェットの詳しい使い方は以下の記事で解説しています。

選択項目を表示するRadiobutton
複数の選択項目から、ユーザーに特定の項目を選択させるためのUIを実装できるRadiobuttonウィジェットを以下の記事で解説しています。


プログラミングのスキルを活かすには
プログラミングのスキルを仕事に活かすには、フリーランスとして受けられる案件がおすすめです。

テックゲートフリーランスは、フリーランスエンジニアの案件紹介や契約交渉・債権管理などのサポートを行っているフリーランスエージェントです。
- リモートワーク可能な案件が50%以上
- 週3〜4日の案件の豊富さ
- 年収100万円アップのサポート
無料相談フォームからご登録いただくだけで、経験年数やスキルに合わせて案件をご紹介。また、リモートワーク可能な案件や週3〜4日OKの案件も豊富に用意されています。
副業やフリーランスとして仕事を受けてみたいと考えている方には、テックゲートフリーランスが提供する多様なサポートが非常におすすめです。
\ 無料で登録してみる! /
まとめ
今回はtkinterを使ってウィンドウを作成する方法を解説しました。今後当ブログでフォームに様々な機能を実装するウィジェットの使い方を解説していく予定です。
Tkinterを使ったGUI作成についてさらに詳しく学びたい方には、自分のペースで動画で学べるUdemyの以下の講座もおすすめです。

また、以下の記事で効率的にPythonのプログラミングスキルを学べるプログラミングスクールの選び方について解説しています。最近ではほとんどのスクールがオンラインで授業を受けられるようになり、仕事をしながらでも自宅で自分のペースで学習できるようになりました。
スキルアップや副業にぜひ活用してみてください。

スクールではなく、自分でPythonを習得したい方には、いつでもどこでも学べる動画学習プラットフォームのUdemyがおすすめです。
講座単位で購入できるため、スクールに比べ非常に安価(セール時1200円程度~)に学ぶことができます。私も受講しているおすすめの講座を以下の記事でまとめていますので、ぜひ参考にしてみてください。

それでは、また次の記事でお会いしましょう。


コメント