KURORO BLOGのロゴ

このエントリーをはてなブックマークに追加
Tkinterで使われるttkって?Tkinterとの違いを交えて徹底解説!?

Tkinterで使われるttkって?Tkinterとの違いを交えて徹底解説!?

今回はTkinterで使われるttkに関して、Tkinterとの違いを交えて徹底解説いたします。そもそもttkとは何か知りたい、Tkinterとttkの違いを学びたい方へおすすめです。是非最後までご覧ください。

目次
  1. そもそもPythonで使われるTkinterとは?
  2. そもそもTkinterで使われるttkとは?
    1. ttkで利用できるGUIの種類
  3. Tkinterとttkの各GUIの外観の違いを調べてみた
    1. button
    2. checkbutton
    3. entry
    4. label
    5. menubutton
    6. radiobutton
    7. scale
    8. scrollbar
    9. spinbox
  4. まとめ
  5. 参考文献
目次を開く⬇︎

執筆者 - おすすめの記事3選

そもそもPythonで使われるTkinterとは?

Pythonで使われるTkinterとは、自分独自のGUIを作成するための道具を表します。

要するに、パソコンの画面上で、画面・アイコン・ボタンなどを自分独自で作り上げるための道具を意味します。

Tkinterのメリット・デメリットやTkinter以外のGUI等、Tkinterに関して詳しく知りたい方は、【Tkinterの基礎知識】Tkinterの特徴から活用例を徹底解説!?でまとめていますので、是非ご確認ください。

そもそもTkinterで使われるttkとは?

Tkinterで使われるttkとは、テーマ(名前)を指定することで、外観をいい感じに変更するものを意味します。

Tkinterの拡張と考えるとよいでしょう。Tkinterのversion 8.5から導入されました。

ttkの利用には、tkinterからttkをimportする必要があります。

1# tkinterからttkをimportする
2from tkinter import ttk

ttkで利用できるGUIの種類

ttkを利用することで、以下の表のようなGUIを作成できます。

名称特徴
button   Webページやアプリで利用されるようなボタンとして利用する。
checkbutton   クリックするとチェックが付く、見た目が四角な、画面の部品として利用する。
entry   Webページやアプリの会員登録、お問い合わせ画面などで利用されるテキストボックスとして利用する。
frame   1つ以上のWidgetを取りまとめるもの = Frameとして利用する。
label   文字や画像などを画面上に表示するものとして利用する。
labelframe   1つ以上のWidgetを取りまとめるもの = Frameとして利用する。
menubutton   menubuttonを選択すると、様々なmenuを展開できる入れ物として利用する。
panedwindow   1つ以上のWidgetを取りまとめて複数の領域に分割する機能として利用する。
radiobutton   複数の選択肢の中から、1つを選ぶときに使われる入力フォームとして利用する。
scale   ファイルのダウンロード状況やタスクの進捗などを視覚化したものとして利用する。
scrollbar   パソコン操作画面の右側または下側に表示される棒状の操作ツールとして利用する。
spinbox   Webページやアプリの会員登録、お問い合わせ画面などで利用されるテキストボックスに、右側へ上下のボタンが付いたものとして利用する。
combobox   comboboxを選択すると、表示される様々な選択肢を選んだり、combobox内へ直接文字入力できるテキストボックスとして利用する。
progressbar   ファイルのダウンロード状況やタスクの進捗などを視覚化するものとして利用する。
treeview   データを階層化して、表を作成するために利用する。
Separator   境界線を作成するために利用する。
Sizegrip   Windowの大きさを変更可能であることを示すために利用する。
Notebook   タブを利用して、画面を切り替える設定を行うために利用する。

Tkinterとttkの各GUIの外観の違いを調べてみた

最後にTkinterとttkの各GUIの外観の違いを調べてみました。

順にみていきましょう。

button

buttonは、Webページやアプリで利用されるようなボタンとして利用します。

例えば以下のようなコードを作成すると、

1import tkinter as tk
2from tkinter import ttk
3
4class Application(tk.Frame):
5    # button Widgetを取得する関数
6    def getButton(self):
7        # Windowを親要素として、frame Widget(Frame)を作成する。
8        # Frameについて : https://kuroro.blog/python/P20XOidA5nh583fYRvxf/
9        frame = tk.Frame(self.master)
10        # Windowを親要素として、frame Widget(Frame)をどのように配置するのか?
11        # packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/
12        frame.pack()
13
14        # frame Widget(Frame)を親要素として、button Widgetを作成する。
15        # text : テキスト情報
16        # width : 幅の設定
17        # Buttonについて : https://kuroro.blog/python/oFju6EngDtcYtIiMIDf1/
18        button = tk.Button(frame, text="tkinter button", width=10)
19        # frame Widget(Frame)を親要素として、button Widgetをどのように配置するのか?
20        # packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/
21        button.pack(pady=10)
22
23        # ttk.Button()の外観を変更
24        style = ttk.Style()
25        # テーマ(名前)の指定を行う。
26        # テーマ(名前)について : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/ ページの「テーマ(名前)を利用して、button Widgetの外観を変更」箇所を参照
27        style.theme_use('classic')
28
29        # frame Widget(Frame)を親要素として、button Widgetを作成する。
30        # text : テキスト情報
31        # width : 幅の設定
32        # Buttonについて : https://kuroro.blog/python/oFju6EngDtcYtIiMIDf1/
33        ttkButton = ttk.Button(frame, text="ttk button", width=10)
34        # frame Widget(Frame)を親要素として、button Widgetをどのように配置するのか?
35        # packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/
36        ttkButton.pack()
37
38    def __init__(self, master=None):
39        # Windowの初期設定を行う。
40        super().__init__(master)
41        # Windowの画面サイズを設定する。
42        # geometryについて : https://kuroro.blog/python/rozH3S2CYE0a0nB3s2QL/
43        self.master.geometry("300x200")
44        self.getButton()
45
46# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
47if __name__ == "__main__":
48    # Windowを生成する。
49    # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
50    root = tk.Tk()
51    app = Application(master=root)
52
53    # Windowをループさせて、継続的にWindow表示させる。
54    # mainloopについて : https://kuroro.blog/python/DmJdUb50oAhmBteRa4fi/
55    app.mainloop()

以下の画像のように、Tkinter, ttkのbuttonに関するGUIを作成できます。

buttonに関しては、Tkinterで使われるbuttonとは?コード例を交えて実践的な活用方法を解説でまとめていますので、詳しく知りたい方は是非ご確認ください。

checkbutton

checkbuttonはクリックするとチェックが付く、見た目が四角な、画面の部品として利用します。

例えば以下のようなコードを作成すると、

1import tkinter as tk
2from tkinter import ttk
3
4class Application(tk.Frame):
5    # checkbutton Widgetを取得する関数
6    def getCheckbutton(self):
7        # Windowを親要素として、frame Widget(Frame)を作成する。
8        # Frameについて : https://kuroro.blog/python/P20XOidA5nh583fYRvxf/
9        frame = tk.Frame(self.master)
10        # Windowを親要素として、frame Widget(Frame)をどのように配置するのか?
11        # packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/
12        frame.pack()
13
14        # frame Widget(Frame)を親要素として、checkbutton Widgetを作成する。
15        # text : テキスト情報
16        # Checkbuttonについて : https://kuroro.blog/python/gspi4F2pMIkzHN7l0f1F/
17        checkbutton = tk.Checkbutton(frame, text="tkinter checkbutton")
18        # frame Widget(Frame)を親要素として、checkbutton Widgetをどのように配置するのか?
19        # packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/
20        checkbutton.pack(pady=10)
21
22        # ttk.Checkbutton()の外観を変更
23        style = ttk.Style()
24        # テーマ(名前)の指定を行う。
25        # テーマ(名前)について : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/ ページの「テーマ(名前)を利用して、button Widgetの外観を変更」箇所を参照
26        style.theme_use('classic')
27
28        # frame Widget(Frame)を親要素として、checkbutton Widgetを作成する。
29        # text : テキスト情報
30        # Checkbuttonについて : https://kuroro.blog/python/gspi4F2pMIkzHN7l0f1F/
31        ttkCheckbutton = ttk.Checkbutton(frame, text="ttk checkbutton")
32        # frame Widget(Frame)を親要素として、checkbutton Widgetをどのように配置するのか?
33        # packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/
34        ttkCheckbutton.pack()
35
36    def __init__(self, master=None):
37        # Windowの初期設定を行う。
38        super().__init__(master)
39        # Windowの画面サイズを設定する。
40        # geometryについて : https://kuroro.blog/python/rozH3S2CYE0a0nB3s2QL/
41        self.master.geometry("300x200")
42        self.getCheckbutton()
43
44# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
45if __name__ == "__main__":
46    # Windowを生成する。
47    # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
48    root = tk.Tk()
49    app = Application(master=root)
50
51    # Windowをループさせて、継続的にWindow表示させる。
52    # mainloopについて : https://kuroro.blog/python/DmJdUb50oAhmBteRa4fi/
53    app.mainloop()

以下の画像のように、Tkinter, ttkのcheckbuttonに関するGUIを作成できます。

checkbuttonに関しては、【初心者必見!?】Tkinterで使われるcheckbuttonを徹底解説!?でまとめていますので、詳しく知りたい方は是非ご確認ください。

entry

entryはWebページやアプリの会員登録、お問い合わせ画面などで利用されるテキストボックスとして利用します。

例えば以下のようなコードを作成すると、

1import tkinter as tk
2from tkinter import ttk
3
4class Application(tk.Frame):
5    # entry Widgetを取得する関数
6    def getEntry(self):
7        # Windowを親要素として、frame Widget(Frame)を作成する。
8        # Frameについて : https://kuroro.blog/python/P20XOidA5nh583fYRvxf/
9        frame = tk.Frame(self.master)
10        # Windowを親要素として、frame Widget(Frame)をどのように配置するのか?
11        # packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/
12        frame.pack()
13
14        # frame Widget(Frame)を親要素として、entry Widgetを作成する。
15        # Entryについて : https://kuroro.blog/python/PUZp77YFxrXvMCjpZbUg/
16        entry = tk.Entry(frame)
17        # frame Widget(Frame)を親要素として、entry Widgetをどのように配置するのか?
18        # packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/
19        entry.pack(pady=10)
20
21        # ttk.Entry()の外観を変更
22        style = ttk.Style()
23        # テーマ(名前)の指定を行う。
24        # テーマ(名前)について : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/ ページの「テーマ(名前)を利用して、button Widgetの外観を変更」箇所を参照
25        style.theme_use('classic')
26
27        # frame Widget(Frame)を親要素として、entry Widgetを作成する。
28        # Entryについて : https://kuroro.blog/python/PUZp77YFxrXvMCjpZbUg/
29        ttkEntry = ttk.Entry(frame)
30        # frame Widget(Frame)を親要素として、entry Widgetをどのように配置するのか?
31        # packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/
32        ttkEntry.pack()
33
34    def __init__(self, master=None):
35        # Windowの初期設定を行う。
36        super().__init__(master)
37        # Windowの画面サイズを設定する。
38        # geometryについて : https://kuroro.blog/python/rozH3S2CYE0a0nB3s2QL/
39        self.master.geometry("300x200")
40        self.getEntry()
41
42# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
43if __name__ == "__main__":
44    # Windowを生成する。
45    # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
46    root = tk.Tk()
47    app = Application(master=root)
48
49    # Windowをループさせて、継続的にWindow表示させる。
50    # mainloopについて : https://kuroro.blog/python/DmJdUb50oAhmBteRa4fi/
51    app.mainloop()

以下の画像のように、Tkinter, ttkのentryに関するGUIを作成できます。

entryに関しては、Tkinterで使われるentryって?有効な活用方法を徹底解説!?でまとめていますので、詳しく知りたい方は是非ご確認ください。

label

labelは文字や画像などを画面上に表示するものとして利用します。

例えば以下のようなコードを作成すると、

1import tkinter as tk
2from tkinter import ttk
3
4class Application(tk.Frame):
5    # label Widgetを取得する関数
6    def getLabel(self):
7        # Windowを親要素として、frame Widget(Frame)を作成する。
8        # Frameについて : https://kuroro.blog/python/P20XOidA5nh583fYRvxf/
9        frame = tk.Frame(self.master)
10        # Windowを親要素として、frame Widget(Frame)をどのように配置するのか?
11        # packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/
12        frame.pack()
13
14        # frame Widget(Frame)を親要素として、label Widgetを作成する。
15        # text : テキスト情報
16        # width : 幅の設定
17        # Labelについて : https://kuroro.blog/python/Pj4Z7JBNRvcHZvtFqiKD/
18        label = tk.Label(frame, text="tkinter label", width=10)
19        # frame Widget(Frame)を親要素として、label Widgetをどのように配置するのか?
20        # packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/
21        label.pack(pady=10)
22
23        # ttk.Label()の外観を変更
24        style = ttk.Style()
25        # テーマ(名前)の指定を行う。
26        # テーマ(名前)について : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/ ページの「テーマ(名前)を利用して、button Widgetの外観を変更」箇所を参照
27        style.theme_use('classic')
28
29        # frame Widget(Frame)を親要素として、label Widgetを作成する。
30        # text : テキスト情報
31        # width : 幅の設定
32        # Labelについて : https://kuroro.blog/python/Pj4Z7JBNRvcHZvtFqiKD/
33        ttkLabel = ttk.Label(frame, text="ttk label", width=10)
34        # frame Widget(Frame)を親要素として、label Widgetをどのように配置するのか?
35        # packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/
36        ttkLabel.pack()
37
38    def __init__(self, master=None):
39        # Windowの初期設定を行う。
40        super().__init__(master)
41        # Windowの画面サイズを設定する。
42        # geometryについて : https://kuroro.blog/python/rozH3S2CYE0a0nB3s2QL/
43        self.master.geometry("300x200")
44        self.getLabel()
45
46# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
47if __name__ == "__main__":
48    # Windowを生成する。
49    # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
50    root = tk.Tk()
51    app = Application(master=root)
52
53    # Windowをループさせて、継続的にWindow表示させる。
54    # mainloopについて : https://kuroro.blog/python/DmJdUb50oAhmBteRa4fi/
55    app.mainloop()

以下の画像のように、Tkinter, ttkのlabelに関するGUIを作成できます。

labelに関しては、【初学者必見!?】Tkinterで使われるlabelの活用方法を徹底解説でまとめていますので、詳しく知りたい方は是非ご確認ください。

menubutton

menubuttonはmenubuttonを選択すると、様々なmenuを展開できる入れ物として利用します。

例えば以下のようなコードを作成すると、

1import tkinter as tk
2from tkinter import ttk
3
4class Application(tk.Frame):
5    # menubutton Widgetを取得する関数
6    def getMenubutton(self):
7        # Windowを親要素として、frame Widget(Frame)を作成する。
8        # Frameについて : https://kuroro.blog/python/P20XOidA5nh583fYRvxf/
9        frame = tk.Frame(self.master)
10        # Windowを親要素として、frame Widget(Frame)をどのように配置するのか?
11        # packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/
12        frame.pack()
13
14        # frame Widget(Frame)を親要素として、menubutton Widgetを作成する。
15        # text : テキスト情報
16        # Menubuttonについて : https://kuroro.blog/python/Dfq4VCJ7OiEfYJv6ySge/
17        menubutton = tk.Menubutton(frame, text="tkinter menubutton")
18        # frame Widget(Frame)を親要素として、menubutton Widgetをどのように配置するのか?
19        # packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/
20        menubutton.pack(pady=10)
21
22        # ttk.Menubutton()の外観を変更
23        style = ttk.Style()
24        # テーマ(名前)の指定を行う。
25        # テーマ(名前)について : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/ ページの「テーマ(名前)を利用して、button Widgetの外観を変更」箇所を参照
26        style.theme_use('classic')
27
28        # frame Widget(Frame)を親要素として、menubutton Widgetを作成する。
29        # text : テキスト情報
30        # Menubuttonについて : https://kuroro.blog/python/Dfq4VCJ7OiEfYJv6ySge/
31        ttkMenubutton = ttk.Menubutton(frame, text="ttk menubutton")
32        # frame Widget(Frame)を親要素として、menubutton Widgetをどのように配置するのか?
33        # packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/
34        ttkMenubutton.pack()
35
36    def __init__(self, master=None):
37        # Windowの初期設定を行う。
38        super().__init__(master)
39        # Windowの画面サイズを設定する。
40        # geometryについて : https://kuroro.blog/python/rozH3S2CYE0a0nB3s2QL/
41        self.master.geometry("300x200")
42        self.getMenubutton()
43
44# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
45if __name__ == "__main__":
46    # Windowを生成する。
47    # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
48    root = tk.Tk()
49    app = Application(master=root)
50
51    # Windowをループさせて、継続的にWindow表示させる。
52    # mainloopについて : https://kuroro.blog/python/DmJdUb50oAhmBteRa4fi/
53    app.mainloop()

以下の画像のように、Tkinter, ttkのmenubuttonに関するGUIを作成できます。

menubuttonに関しては、Tkinterで使われるmenubuttonとは?コードや画像を用いて解説!?でまとめていますので、詳しく知りたい方は是非ご確認ください。

radiobutton

radiobuttonは複数の選択肢の中から、1つを選ぶときに使われる入力フォームとして利用します。

例えば以下のようなコードを作成すると、

1import tkinter as tk
2from tkinter import ttk
3
4class Application(tk.Frame):
5    # radiobutton Widgetを取得する関数
6    def getRadiobutton(self):
7        # Windowを親要素として、frame Widget(Frame)を作成する。
8        # Frameについて : https://kuroro.blog/python/P20XOidA5nh583fYRvxf/
9        frame = tk.Frame(self.master)
10        # Windowを親要素として、frame Widget(Frame)をどのように配置するのか?
11        # packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/
12        frame.pack()
13
14        # frame Widget(Frame)を親要素として、radiobutton Widgetを作成する。
15        # text : テキスト情報
16        # Radiobuttonについて : https://kuroro.blog/python/ztJbt5uabbTBMCGcljHc/
17        radiobutton = tk.Radiobutton(frame, text="tkinter radiobutton")
18        # frame Widget(Frame)を親要素として、radiobutton Widgetをどのように配置するのか?
19        # packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/
20        radiobutton.pack(pady=10)
21
22        # ttk.Radiobutton()の外観を変更
23        style = ttk.Style()
24        # テーマ(名前)の指定を行う。
25        # テーマ(名前)について : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/ ページの「テーマ(名前)を利用して、button Widgetの外観を変更」箇所を参照
26        style.theme_use('classic')
27
28        # frame Widget(Frame)を親要素として、radiobutton Widgetを作成する。
29        # text : テキスト情報
30        # Radiobuttonについて : https://kuroro.blog/python/ztJbt5uabbTBMCGcljHc/
31        ttkRadiobutton = ttk.Radiobutton(frame, text="ttk radiobutton")
32        # frame Widget(Frame)を親要素として、radiobutton Widgetをどのように配置するのか?
33        # packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/
34        ttkRadiobutton.pack()
35
36    def __init__(self, master=None):
37        # Windowの初期設定を行う。
38        super().__init__(master)
39        # Windowの画面サイズを設定する。
40        # geometryについて : https://kuroro.blog/python/rozH3S2CYE0a0nB3s2QL/
41        self.master.geometry("300x200")
42        self.getRadiobutton()
43
44# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
45if __name__ == "__main__":
46    # Windowを生成する。
47    # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
48    root = tk.Tk()
49    app = Application(master=root)
50
51    # Windowをループさせて、継続的にWindow表示させる。
52    # mainloopについて : https://kuroro.blog/python/DmJdUb50oAhmBteRa4fi/
53    app.mainloop()

以下の画像のように、Tkinter, ttkのradiobuttonに関するGUIを作成できます。

radiobuttonに関しては、Tkinterで使われるradiobuttonとは?活用方法から実用例を徹底解説でまとめていますので、詳しく知りたい方は是非ご確認ください。

scale

scaleはファイルのダウンロード状況やタスクの進捗などを視覚化したものとして利用します。

例えば以下のようなコードを作成すると、

1import tkinter as tk
2from tkinter import ttk
3
4class Application(tk.Frame):
5    # scale Widgetを取得する関数
6    def getScale(self):
7        # Windowを親要素として、frame Widget(Frame)を作成する。
8        # Frameについて : https://kuroro.blog/python/P20XOidA5nh583fYRvxf/
9        frame = tk.Frame(self.master)
10        # Windowを親要素として、frame Widget(Frame)をどのように配置するのか?
11        # packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/
12        frame.pack()
13
14        # frame Widget(Frame)を親要素として、scale Widgetを作成する。
15        # Scaleについて : https://kuroro.blog/python/DUvG7YaE2i6jLwCxdPXJ/
16        scale = tk.Scale(frame)
17        # frame Widget(Frame)を親要素として、scale Widgetをどのように配置するのか?
18        # packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/
19        scale.pack(pady=10)
20
21        # ttk.Scale()の外観を変更
22        style = ttk.Style()
23        # テーマ(名前)の指定を行う。
24        # テーマ(名前)について : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/ ページの「テーマ(名前)を利用して、button Widgetの外観を変更」箇所を参照
25        style.theme_use('classic')
26
27        # frame Widget(Frame)を親要素として、scale Widgetを作成する。
28        # Scaleについて : https://kuroro.blog/python/DUvG7YaE2i6jLwCxdPXJ/
29        ttkScale = ttk.Scale(frame)
30        # frame Widget(Frame)を親要素として、scale Widgetをどのように配置するのか?
31        # packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/
32        ttkScale.pack()
33
34    def __init__(self, master=None):
35        # Windowの初期設定を行う。
36        super().__init__(master)
37        # Windowの画面サイズを設定する。
38        # geometryについて : https://kuroro.blog/python/rozH3S2CYE0a0nB3s2QL/
39        self.master.geometry("300x200")
40        self.getScale()
41
42# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
43if __name__ == "__main__":
44    # Windowを生成する。
45    # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
46    root = tk.Tk()
47    app = Application(master=root)
48
49    # Windowをループさせて、継続的にWindow表示させる。
50    # mainloopについて : https://kuroro.blog/python/DmJdUb50oAhmBteRa4fi/
51    app.mainloop()

以下の画像のように、Tkinter, ttkのscaleに関するGUIを作成できます。

scaleに関しては、Tkinterで活用されるscaleとは?コードを通して徹底解説!?でまとめていますので、詳しく知りたい方は是非ご確認ください。

scrollbar

scrollbarはパソコン操作画面の右側または下側に表示される棒状の操作ツールとして利用します。

例えば以下のようなコードを作成すると、

1import tkinter as tk
2from tkinter import ttk
3
4class Application(tk.Frame):
5    # scrollbar Widgetを取得する関数
6    def getScrollBar(self):
7        # Windowを親要素として、frame Widget(Frame)を作成する。
8        # Frameについて : https://kuroro.blog/python/P20XOidA5nh583fYRvxf/
9        frame = tk.Frame(self.master)
10        # Windowを親要素として、frame Widget(Frame)をどのように配置するのか?
11        # packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/
12        frame.pack(pady=10)
13
14        # frame Widget(Frame)を親要素として、text Widgetを作成する。
15        # height : 高さを設定
16        # width : 幅を設定
17        # Textについて : https://kuroro.blog/python/bK6fWsP9LMqmER1CBz9E/
18        text = tk.Text(frame, height=4, width=10)
19
20        # frame Widget(Frame)を親要素として、scrollbar Widgetを作成する。
21        # orient option : 垂直scrollbarを作成するため、tk.VERTICALを設定。水平scrollbarの場合は、tk.HORIZONTALを設定する。
22        # command option : scrollbar Widgetを動かした場合に、連動して表示する内容を設定。今回は、text Widgetをy軸方向へ動かした内容を表示する。
23        # Scrollbarについて : https://kuroro.blog/python/vgx53M7D1d6C0R8ejp0V/
24        scrollbar = tk.Scrollbar(frame, orient=tk.VERTICAL, command=text.yview)
25
26        # scrollbar Widgetをtext Widgetに反映する。
27        # scrollbar Widgetの設定内容をtext Widgetと紐付ける。
28        # yscrollcommand : text Widget内で上下移動した場合に、scrollbarが追従するように設定する。
29        text["yscrollcommand"] = scrollbar.set
30
31        # frame Widget(Frame)を親要素とした場合に、text Widgetをどのように配置するのか?
32        # gridについて : https://kuroro.blog/python/JoaowDiUdLAOj3cSBxiX/
33        text.grid(row=0, column=0)
34        # frame Widget(Frame)を親要素とした場合に、scrollbar Widgetをどのように配置するのか?
35        # gridについて : https://kuroro.blog/python/JoaowDiUdLAOj3cSBxiX/
36        scrollbar.grid(row=0, column=1, sticky=(tk.N, tk.S))
37
38        # frame Widget(Frame)を親要素として、text Widgetを作成する。
39        # height : 高さを設定
40        # width : 幅を設定
41        # Textについて : https://kuroro.blog/python/bK6fWsP9LMqmER1CBz9E/
42        textForTtkScrollbar = tk.Text(frame, height=4, width=10)
43
44        # ttk.Scrollbar()の外観を変更
45        style = ttk.Style()
46        # テーマ(名前)の指定を行う。
47        # テーマ(名前)について : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/ ページの「テーマ(名前)を利用して、button Widgetの外観を変更」箇所を参照
48        style.theme_use('classic')
49
50        # frame Widget(Frame)を親要素として、scrollbar Widgetを作成する。
51        # orient option : 垂直scrollbarを作成するため、tk.VERTICALを設定。水平scrollbarの場合は、tk.HORIZONTALを設定する。
52        # command option : scrollbar Widgetを動かした場合に、連動して表示する内容を設定。今回は、text Widgetをy軸方向へ動かした内容を表示する。
53        # Scrollbarについて : https://kuroro.blog/python/vgx53M7D1d6C0R8ejp0V/
54        ttkScrollbar = ttk.Scrollbar(frame, orient=tk.VERTICAL, command=textForTtkScrollbar.yview)
55
56        # scrollbar Widgetをtext Widgetに反映する。
57        # scrollbar Widgetの設定内容をtext Widgetと紐付ける。
58        # yscrollcommand : text Widget内で上下移動した場合に、scrollbarが追従するように設定する。
59        textForTtkScrollbar["yscrollcommand"] = ttkScrollbar.set
60
61        # frame Widget(Frame)を親要素とした場合に、text Widgetをどのように配置するのか?
62        # gridについて : https://kuroro.blog/python/JoaowDiUdLAOj3cSBxiX/
63        textForTtkScrollbar.grid(row=1, column=0)
64        # frame Widget(Frame)を親要素とした場合に、scrollbar Widgetをどのように配置するのか?
65        # gridについて : https://kuroro.blog/python/JoaowDiUdLAOj3cSBxiX/
66        ttkScrollbar.grid(row=1, column=1, sticky=(tk.N, tk.S))
67
68    def __init__(self, master=None):
69        # Windowの初期設定を行う。
70        super().__init__(master)
71        # Windowの画面サイズを設定する。
72        # geometryについて : https://kuroro.blog/python/rozH3S2CYE0a0nB3s2QL/
73        self.master.geometry("300x200")
74        self.getScrollBar()
75
76# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
77if __name__ == "__main__":
78    # Windowを生成する。
79    # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
80    root = tk.Tk()
81    app = Application(master=root)
82
83    # Windowをループさせて、継続的にWindow表示させる。
84    # mainloopについて : https://kuroro.blog/python/DmJdUb50oAhmBteRa4fi/
85    app.mainloop()

以下の画像のように、Tkinter, ttkのscrollbarに関するGUIを作成できます。

scrollbarに関しては、Tkinterで使われるscrollbarとは?活用事例を交えて徹底解説でまとめていますので、詳しく知りたい方は是非ご確認ください。

spinbox

spinboxはWebページやアプリの会員登録、お問い合わせ画面などで利用されるテキストボックスに、右側へ上下のボタンが付いたものとして利用します。

例えば以下のようなコードを作成すると、

1import tkinter as tk
2from tkinter import ttk
3
4class Application(tk.Frame):
5    # spinbox Widgetを取得する関数
6    def getSpinbox(self):
7        # Windowを親要素として、frame Widget(Frame)を作成する。
8        # Frameについて : https://kuroro.blog/python/P20XOidA5nh583fYRvxf/
9        frame = tk.Frame(self.master)
10        # Windowを親要素として、frame Widget(Frame)をどのように配置するのか?
11        # packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/
12        frame.pack()
13
14        # frame Widget(Frame)を親要素として、spinbox Widgetを作成する。
15        # Spinboxについて : https://kuroro.blog/python/CQZWZZXhhyD3B1TWP3FN/
16        spinbox = tk.Spinbox(frame)
17        # frame Widget(Frame)を親要素として、spinbox Widgetをどのように配置するのか?
18        # packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/
19        spinbox.pack(pady=10)
20
21        # ttk.Spinbox()の外観を変更
22        style = ttk.Style()
23        # テーマ(名前)の指定を行う。
24        # テーマ(名前)について : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/ ページの「テーマ(名前)を利用して、button Widgetの外観を変更」箇所を参照
25        style.theme_use('classic')
26
27        # frame Widget(Frame)を親要素として、spinbox Widgetを作成する。
28        # Spinboxについて : https://kuroro.blog/python/CQZWZZXhhyD3B1TWP3FN/
29        ttkSpinbox = ttk.Spinbox(frame)
30        # frame Widget(Frame)を親要素として、spinbox Widgetをどのように配置するのか?
31        # packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/
32        ttkSpinbox.pack()
33
34    def __init__(self, master=None):
35        # Windowの初期設定を行う。
36        super().__init__(master)
37        # Windowの画面サイズを設定する。
38        # geometryについて : https://kuroro.blog/python/rozH3S2CYE0a0nB3s2QL/
39        self.master.geometry("300x200")
40        self.getSpinbox()
41
42# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
43if __name__ == "__main__":
44    # Windowを生成する。
45    # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
46    root = tk.Tk()
47    app = Application(master=root)
48
49    # Windowをループさせて、継続的にWindow表示させる。
50    # mainloopについて : https://kuroro.blog/python/DmJdUb50oAhmBteRa4fi/
51    app.mainloop()

以下の画像のように、Tkinter, ttkのspinboxに関するGUIを作成できます。

spinboxに関しては、Tkinterで使われるspinboxとは!?用例を踏まえて徹底解説でまとめていますので、詳しく知りたい方は是非ご確認ください。

まとめ

  • Pythonで使われるTkinterとは、自分独自のGUIを作成するための道具を表す。
  • Tkinterで使われるttkとは、テーマ(名前)を指定することで、外観をいい感じに変更するものを意味する。

参考文献

記事に関するお問い合わせ