PythonのGUIを試してみた

PythonのGUI(グラフィカルユーザーインターフェース)モジュールのtkinterを試してみました。

目次

  1. PythonでGUI
  2. 早速試してみた

PythonでGUI

Pythonを使うといろいろなことができますが、コマンドプロンプト(またはターミナル)だけでなくてWindowsのようなグラフィカルなユーザーインターフェースを作りたくなります。

C#であればXAMLがこのあたりを担うのですが、Pythonにも GUIを構成するためのモジュールがいくつか あります。

その中でもPythonに標準で付いてくるtkinterを試してみます。

早速試してみた

公式ドキュメントなどを見ながら、ボタンを押すとラベルにHello Worldと表示するアプリを作ってみました。

import tkinter as tk
import tkinter.ttk as ttk

class Application(tk.Frame):
    def __init__(self, master=None):
        super().__init__(master)
        self.master = master
        self.master.title('tkinter trial')
        self.pack()
        self.create_widgets()

    def create_widgets(self):
        self.displayed_text = tk.StringVar()
        self.displayed_text.set('')

        self.hello_label = ttk.Label(self, textvariable=self.displayed_text, width=20)
        self.hello_label.grid(row=0, column=0)

        self.hello_button = ttk.Button(self, text='Hello')
        self.hello_button.bind('<Button-1>', hello)
        self.hello_button.grid(row=0, column=2)

        self.clear_button = ttk.Button(self, text='Clear')
        self.clear_button.bind('<Button-1>', clear_label)
        self.clear_button.grid(row=0, column=3)

        self.quit_button = ttk.Button(self, text='QUIT', command=self.master.destroy)
        self.quit_button.grid(row=0, column=4)

def hello(event):
    app.displayed_text.set('Hello World.')

def clear_label(event):
    app.displayed_text.set('')

root = tk.Tk()
app = Application(master=root)
app.mainloop()

Applicationという名前のクラスがいわゆるルックアンドフィールを定義しているところです。ttkを使うと、モダンな感じになります。

フレームをグリッドに分割して、ラベルとボタンを並べています。

ボタンが押されたら外のファンクションを呼び出して、呼び出されたファンクションが変数を変更するという感じです。

実際に動かしてみるとこんな感じです。

実行結果

公開日

広告