最近tkinterというものを使ってみました! PythonでGUIのアプリを作るライブラリの1つです。
簡単なGUIを、割と簡単に作ることができたので結構よさげ!
インストール
Windowsでは、Pythonパッケージのインストール時。
Linuxでは、apt-getでインストールするようです。
ぼくの環境は恐らくデフォルトチェックされていたため、既に入っていました。
正しくインストールされていると、次のように python -m tkinter として、 ポップアップが表示されます。 引用:Tkinter のインストール - Python 入門
との事なので、とりあえず試したらちゃんと表示がされました。
試してみた
下記ソースを適当な.pyファイルで保存して実行すればOK。
# -*- coding: utf-8 -*- # author lis # http://www.lisz-works.com import tkinter as tk # buttonのクリックイベント def pushed(self): print("clicked") # コンソールに表示 self["text"] = "clicked" # 渡したオブジェクトのテキストを変更 # evButtonのクリックイベント def ev(self): self["text"] = "押したね!" # メインウィンドウの生成 root = tk.Tk() # タイトルを変更 root.title("test tk") # サイズ変更 root.geometry("640x480") # ラベル label = tk.Label(root, text="TestLabel") label.grid() # このパーツをウィンドウにセット # ボタン # commandはコールする関数 #button = tk.Button(root, text="TestButton", command="pushed") # commandをラムダ関数にして、pushedに自身(button)を渡す button = tk.Button(root, text="TestButton", command= lambda : pushed(button)) button.grid() # このパーツをウィンドウにセット evLabel = tk.Label(root, text="ボタンを押してね") evLabel.grid() # このパーツをウィンドウにセット evButton = tk.Button(root, text="押せ", command=lambda : ev(evLabel)) evButton.grid() # このパーツをウィンドウにセット # メインウィンドウは最後にコレをする # rootを表示させるためのループ root.mainloop()
実行するとこんな感じで表示されます。
ソースの内容
大まかな流れとしては、「root」という変数に、メインウィンドウをセットします。
そしてrootに対して、画面の構成要素やプロパティを設定していく感じです。
今回はボタンを2つ用意してみました。
上のボタンは、押すことでボタンのラベルが変わります。
同時にコンソールにも出力を行います。
下のボタンは、押すことで1つ上のラベルの内容が変わります。
tkinterのメリット
GUI作成といえば以前、Kivyを試してみました。
Kivyと比べてtkinterは、UI作成するためのコードがかなり簡素に感じました。
超ざっくりな感覚はこんな感じ。
使うもの | 簡易さ | 柔軟性 |
---|---|---|
Kivy | △ | ○ |
tkinter | ○ | △ |
Kivyの場合、「この名前でこれを用意して……」というの多々あった印象。 対してtkinterは、構成要素と対応する関数を登録するような簡素な作りです。
逆を返せば、それだけ簡素なものしか作れないかもしれません。
(まだ触りしかやってないので、なんともですが)
KivyはUI用ファイルを外部化できたり、UIと変数を連動したり……
といった複雑なことができる故に、複雑なGUIアプリを作ることが可能だと思います。
その辺は一長一短だなぁというところで。
あとがき
ということでtkinterのご紹介でした。
作業をするうえで、簡単なものをちょちょっと作る程度なら、tkinterでいいかなぁって感じですね。