Note by Yoshikawa

Love Technology and Art

tkinter使ってみた

プログラムの実行をguiにしたいときに手軽に組める。

以下サンプル

よく使う入力枠、ドロップダウンリスト、ラジオボタンの例

import tkinter  as tk
from tkinter import messagebox as tkm
from tkinter import ttk

def show(line):
    tkm.showinfo('sample', line)

root = tk.Tk()
root.title(u'Sample')
root.geometry('300x300')

# 入力ボックス
label1 = ttk.Label(text=u'入力')
label1.pack()

entry = ttk.Entry(width=20)
entry.pack(pady=(0,5))

# ドロップダウンリスト
label2 = ttk.Label(text=u'ドロップダウンリスト')
label2.pack()

combo = ttk.Combobox(width=15, state='readonly')
combo["values"] = ['ちょえーーーー!!!','くわっ!!!','はーーーーーっ!!!','ふひふふっひいいい!!!']
combo.current(0)
combo.pack(pady=(0,5))

# ラジオボタン
label3 = ttk.Label(text=u'ラジオボタン')
label3.pack()

var = tk.StringVar()
radio1 = ttk.Radiobutton(text=u"1", variable=var, value='キタ━─━─━ヾ(o✪‿✪o)シ━─━─━ッ♪')
radio1.pack()
radio2 = ttk.Radiobutton(text=u"2", variable=var, value='( `)3′)▃▃▃▅▆▇▉ブブブーブォォオ')
radio2.pack(pady=(0,5))

#ボタンを押すと関数呼び出し
button1 = tk.Button(text=u'入力ボックス表示', width=20, height=2, command=lambda: show(entry.get()))
button1.pack(pady=(0,5))

button2 = tk.Button(text=u'ドロップダウンリスト表示', width=20, height=2, command=lambda: show(combo.get()))
button2.pack(pady=(0,5))

button3 = tk.Button(text=u'ラジオボタン選択表示', width=20, height=2, command=lambda: show(var.get()))
button3.pack(pady=(0,5))

root.mainloop()


タブを使う場合

import tkinter as tk
from tkinter import ttk
from tkinter import messagebox as tkm


def show(line):
    tkm.showinfo('test', line)


class set_tab1():
    def __init__(self, tab):
        self.var = tk.StringVar()
        self.tab = tab
        self.set_entry()
        self.set_button()

    def set_entry(self):
        frame = tk.Frame(self.tab)
        frame.pack(pady=(10, 20))

        label = ttk.Label(frame, text=u'エントリー', width=10)
        label.pack(side='left', anchor=tk.W, padx=(0, 10))

        entry = ttk.Entry(frame, textvariable=self.var, width=25)
        entry.pack(side='left', anchor=tk.W)

    def set_button(self):
        Button = tk.Button(self.tab, text=u'表示', width=20, height=3, command=lambda: show(self.var.get()))
        Button.pack()

class set_tab2():
    def __init__(self, tab):
        self.var = tk.StringVar()
        self.tab = tab
        self.set_dropdown()
        self.set_button()

    def set_dropdown(self):
        frame = tk.Frame(self.tab)
        frame.pack(pady=(10, 20))

        label = ttk.Label(frame, text=u'ドロップダウン', width=10)
        label.pack(side='left', anchor=tk.W, padx=(0, 10))

        combo = ttk.Combobox(frame, width=20, state='readonly')
        combo["values"] = ['ちょえーーーー!!!', 'くわっ!!!', 'はーーーーーっ!!!', 'ふひふふっひいいい!!!']
        combo.current(0)
        combo.pack(side='left', anchor=tk.W)

        self.var = combo

    def set_button(self):
        Button = tk.Button(self.tab, text=u'表示', width=20, height=3, command=lambda:show(self.var.get()))
        Button.pack()


class set_tab3():
    def __init__(self, tab):
        self.var = tk.StringVar()
        self.tab = tab
        self.set_radio()
        self.set_button()

    def set_radio(self):
        frame = tk.Frame(self.tab)
        frame.pack(pady=(10, 20))

        label = ttk.Label(frame, text=u'ラジオボタン', width=10)
        label.pack(side='left', anchor=tk.W, padx=(0, 10))

        radio1 = ttk.Radiobutton(frame, text=u"1", variable=self.var, value='キタ━─━─━ヾ(o✪‿✪o)シ━─━─━ッ♪')
        radio1.pack(side='left', padx=(0, 10))

        radio2 = ttk.Radiobutton(frame, text=u"2", variable=self.var, value='( `)3′)▃▃▃▅▆▇▉ブブブーブォォオ')
        radio2.pack(side='left')

    def set_button(self):
        Button = tk.Button(self.tab, text=u'表示', width=20, height=3, command=lambda:show(self.var.get()))
        Button.pack()


if __name__ == '__main__':
    root = tk.Tk()
    root.title(u'サンプル')
    root.geometry('400x250')
    root.resizable(False, False)

    # ノートブック
    nb = ttk.Notebook(width=100, height=300)

    # タブ作成
    tab1 = ttk.Frame(nb)
    tab2 = ttk.Frame(nb)
    tab3 = ttk.Frame(nb)
    nb.add(tab1, text='エントリー', padding=3)
    nb.add(tab2, text='ドロップダウン', padding=3)
    nb.add(tab3, text='ラジオボタン', padding=3)
    nb.pack(expand=1, fill='both')

    # タブ配置
    set_tab1(tab1)
    set_tab2(tab2)
    set_tab3(tab3)

    root.mainloop()


以下のサイトがめちゃわかりやすい
Introduction · tkinter