Python用モジュール「Tkinter」GUIアプリを作成する方法についてソースコード付きでまとめました。
【はじめに】Tkinterの特徴
TkinterとはPython標準のGUIアプリ作成用モジュールです。
主な特徴は下記の通り。
– | 主な特徴 |
---|---|
1 | Pythonに標準で付属(他のライブラリと違ってインストール不要) |
2 | 有名なGUIライブラリ「Tk」のPythonバージョン |
3 | 作成したGUIアプリはクロスプラットフォームで動作可能 |
【画面作成】サイズ設定、タイトル作成
GUIアプリの画面サイズを設定しタイトルを表示します。
# -*- coding:utf-8 -*- import sys import tkinter root = tkinter.Tk() root.title("タイトル") root.geometry("400x400") root.mainloop()
画面タイトルが「エクスカリバー」、タイトル画面サイズが400×400[px]のウインドウが表示されます。
– | 詳細記事 |
---|---|
1 | ■【Python/Tkinter】GUIアプリの画面サイズとタイトルの設定 |
【GUI部品】ステータスバー、ラベル、メニューバー、チェックボックス
ステータスバーの文字を設定し表示します。
# -*- coding:utf-8 -*- import sys import tkinter root = tkinter.Tk() root.title("タイトル") root.geometry("300x300") # ステータスバーの設定 status = tkinter.Label(root, text="にゃんぱすー", borderwidth=2, relief="groove") status.pack(side=tkinter.BOTTOM, fill=tkinter.X) root.mainloop()
「text=」にテキストに表示したい文字列を入れます。
– | 詳細記事 |
---|---|
1 | ■【Python/Tkinter】ステータスバーの文字設定 |
画面にラベルを表示します。
# -*- coding:utf-8 -*- import sys import tkinter root = tkinter.Tk() root.title("タイトル") root.geometry("300x300") # ラベルの設定 Static1 = Tkinter.Label(text='にゃんぱすー', foreground='#ff0000', background='#ffaacc') Static1.place(x=150, y=200) root.mainloop()
設定内容 | 修正場所 |
---|---|
ラベル名・前景色・背景色の設定 | Tkinter.Label(text=’ラベル名’, foreground=’前景のカラーコード’, background=’背景のカラーコード’) |
ラベル位置の設定 | Static1.place(x=x座標, y=y座標) |
変数Static1には、ラベルのハンドルが格納されています。
– | 詳細記事 |
---|---|
1 | ■【Python/Tkinter】ラベルの表示設定 |
入力ボックス(エントリー)を設置します。
# -*- coding:utf-8 -*- import sys import tkinter root = tkinter.Tk() root.title("タイトル") root.geometry("300x300") # エントリーの設定 EditBox = Tkinter.Entry(width=50) EditBox.insert(Tkinter.END, "最初に表示される文字列") EditBox.pack() # エントリーに入力された内容を取得 value = EditBox.get() root.mainloop()
次の方法でも作成できます。
# -*- coding:utf-8 -*- import tkinter as tk root = tk.Tk() root.title("タイトル") root.geometry("300x300") label = tkinter.Label(root, text="名前") label.pack(side=tkinter.LEFT) label = tkinter.Entry(root, bd=1) label.pack(side=tkinter.RIGHT) root.mainloop()
– | 詳細記事 |
---|---|
1 | ■【Python/Tkinter】入力ボックスの設置 |
メニューバーを作成します。
# -*- coding:utf-8 -*- import sys import tkinter def test(): print('click') root = tkinter.Tk() root.title("タイトル") root.geometry("300x300") menubar = tkinter.Menu(root) filemenu = tkinter.Menu(menubar, tearoff=0) # ファイルメニュー filemenu.add_command(label="新規作成", command=test) filemenu.add_command(label="開く", command=test) filemenu.add_separator() filemenu.add_command(label="保存", command=test) filemenu.add_command(label="名前をつけて保存", command=test) filemenu.add_command(label="閉じる", command=test) menubar.add_cascade(label="ファイル", menu=filemenu) # 編集メニュー editmenu = tkinter.Menu(menubar, tearoff=0) editmenu.add_command(label="元に戻す", command=test) editmenu.add_separator() editmenu.add_command(label="切り取り", command=test) editmenu.add_command(label="コピー", command=test) editmenu.add_command(label="貼り付け", command=test) editmenu.add_command(label="削除", command=test) editmenu.add_command(label="全てを選択", command=test) menubar.add_cascade(label="編集", menu=editmenu) root.config(menu=menubar) root.mainloop()
add_cascadeメソッド・・・階層部分を作成
add_commandメソッド・・・コールバック関数を呼び出すメニューを作成
add_separatorメソッド・・・セパレーター(区切り線)を追加
– | 詳細記事 |
---|---|
1 | ■【Python/Tkinter】メニューバーの作成 |
チェックボックス(ボタン)を作成します。
# -*- coding:utf-8 -*- import tkinter as tk root = tk.Tk() root.title("タイトル") root.geometry("300x300") intvar1 = tk.IntVar() check_btn1 = tk.Checkbutton(root, text="リリイ", variable=intvar1, onvalue=1, offvalue=0, height=5, width=20) check_btn1.pack() intvar2 = tk.IntVar() check_btn2 = tk.Checkbutton(root, text="オルタ", variable=intvar2, onvalue=1, offvalue=0, height=5, width=20) check_btn2.pack() root.mainloop()
– | 詳細記事 |
---|---|
1 | ■【Python/Tkinter】チェックボックス(ボタン)の作成 |
【ウィジェット】背景画像、図形
画像ウィジェットを背景に配置します。
# -*- coding:utf-8 -*- import sys import tkinter root = tkinter.Tk() root.title("タイトル") root.geometry("300x300") # 画像の取得 img = tkinter.PhotoImage(file='bg.gif') # 画像ウィジェットの配置(1行1列) label1 = tkinter.Label(root, image=img) label1.grid(row=1, column=1) # 画像ウィジェットの配置(2行2列) label4 = tkinter.Label(root, image=img) label4.grid(row=2, column=2) root.mainloop()
– | 詳細記事 |
---|---|
1 | ■【Python/Tkinter】画像を背景に貼り付け |
図形(多角形、線)を描画します。
# -*- coding:utf-8 -*- import sys import tkinter root = tkinter.Tk() root.title("タイトル") root.geometry("300x300") # 画像の取得 img = tkinter.PhotoImage(file='bg.gif') # 描画領域 canvas = tkinter.Canvas(root, bg="white", height=300, width=300) # 多角形 canvas.create_polygon(10, 10, 10, 100, 100, 100, 100, 10, fill="green") # 線 canvas.create_line(10, 10, 150, 150, fill='red') canvas.pack() root.mainloop()
– | 詳細記事 |
---|---|
1 | ■【Python/Tkinter】図形の描画(多角形、線) |
【ファイル選択】拡張子の指定機能あり
GUIアプリで重要な機能の1つに「ファイル選択」があります。
Python標準モジュール「Tkinter」では以下のコードで実装できます。
# -*- coding: utf-8 -*- import os, tkinter, tkinter.filedialog, tkinter.messagebox root = tkinter.Tk() root.withdraw() # 選択候補を拡張子jpgに絞る(絞らない場合は *.jpg → *) filetype = [("", "*.jpg")] dirpath = os.path.abspath(os.path.dirname(__file__)) tkinter.messagebox.showinfo('テスト', 'ファイルを選択してください') # 選択したファイルのパスを取得 filepath = tkinter.filedialog.askopenfilename(filetypes = filetype, initialdir = dirpath) # 選択したファイル名を表示 tkinter.messagebox.showinfo('テスト', filepath)
– | 詳細記事 |
---|---|
1 | ■【Python/Tkinter】ファイル選択の実装(ファイルパスの取得) |
– | 関連記事 |
---|---|
参考文献 | ■TkinterによるGUIプログラミング ■PythonのTkinterを使ってみる ■Python3のtkinterによるクロスプラットフォームGUIアプリ作成入門 |
内部 | ■【Python/Tkinter】GUIアプリ作成入門 ■【Python】GUIライブラリの比較・おすすめ ■Python入門 基本文法 |
コメント