ゴールデンウィークまでカウントダウンですね。色んなことを中途半端に試している間に前回の記事から大分間が空いてしまいました。
最近試しているのはAIやロボット関連の技術が多いのですが、Pythonから利用するものが大半で、改めて今Pythonが旬な言語になっているんだなと感じます。
そこで今回は、PythonでAIとロボットを作ってみる…のではなく、その際に何かと便利に使えそうな、Pythonの標準GUIライブラリTkinterで、情報を出力する方法を簡単にまとめてみたいと思います。尚、記事中のコードはすべてPython3系です。
Tkinter
TkinterはPythonに標準で付属する、TkベースのGUIライブラリです。見た目もソフトの作りも若干古い感じですが、Pythonから気軽にGUIによる入出力が作成できるのが利点です。
ちなみにTkinterについて詳細を解説している書籍は、Kindleの英語版のみになってしまいますが、Modern Tkinter for Busy Python Developersあたりが内容もまとまっており、お値段も792円と手ごろです。
Tkinterの動作を確認する
Tkinterの動作は次のコードで確認できます。
import tkinter
tkinter._test()
実行すると、Tck/Tkのバージョンを表示するtkinterベースのウィンドウが表示されます。
やはり微妙な古臭さが漂いますが、お手軽なので我慢我慢。
ボタンを押せるようにする
import tkinter as tk import sys def on_press(): sys.exit(0) root = tk.Tk() button = tk.Button(root, text="exit", command=on_press) button.pack(fill="both") root.mainloop()
ボタンを押した際の挙動はcommand
オプションで指定します。
図形を描画する
import tkinter as tk root = tk.Tk() root.geometry("400x300") canvas = tk.Canvas(root, width=400, height=300) canvas.pack() canvas.create_rectangle(100, 100, 300, 200, fill="green") root.mainloop()
描画で使えるコマンド一覧はこちら。
長文テキストを表示する
短にテキストボックスを置くのではなく、スクロールバーと連携させてみます。
import tkinter as tk root = tk.Tk() text = tk.Text(root, height=10, width=40) text.pack(side=tk.LEFT, fill=tk.Y) scroll = tk.Scrollbar(root) scroll.pack(side=tk.RIGHT, fill=tk.Y) scroll.config(command=text.yview) text.config(yscrollcommand=scroll.set) for i in range(50): text.insert(tk.END, "message" + str(i) + "\n") root.mainloop()
リストを表示する
import tkinter as tk root = tk.Tk() listbox = tk.Listbox(root) listbox.pack(fill="both") listbox.insert(tk.END, "item1") listbox.insert(tk.END, "item2") listbox.insert(tk.END, "item3") root.mainloop()
画像を表示する
jpgやpngなどの画像を表示するにはPython Imaging Libray(PIL)を使う必要があります。
import tkinter as tk import PIL as pil import PIL.ImageTk root = tk.Tk() photo = PIL.ImageTk.PhotoImage(pil.Image.open("cat.jpg")) label = tk.Label(image=photo) label.image = photo # keep a reference label.pack() root.mainloop()
ということでさっと情報を表示したいときに使えそうなサンプルコードを並べてみました。
AIやロボットを作る際に役立つといいですね。