tkinter(ティーケーインター、ティーキンター)はPythonの標準ライブラリで
GUIを利用したい場合に使います。
tkinterは触るのが初なので基本的な動作を試してみたいと思います。
行き当たりばったりでできそうなことをやっていくのでその点はご容赦頂けますと幸いです。
今回はtkinterを使ってbytesの換算結果をGUIで表示してみました。
実行結果は以下となります。
PythonのVersionは3.8.6で検証しています。
tkinterでのbytes換算アプリの作成
とりあえず、こんな感じで書いていきました。
コードの下から備忘録としてコードの解説となります。
import tkinter as tk
import tkinter.simpledialog as simpledialog
root = tk.Tk()
root.title("bytesの換算")
root.geometry("300x350+400+300")
def bytes_conversion(bytes_sum):
kb = round(bytes_sum /1024, 2)
mb = round(bytes_sum /1024 /1024, 2)
gb = round(bytes_sum /1024 /1024 /1024, 2)
tb = round(bytes_sum /1024 /1024 /1024 /1024, 2)
l_title = tk.Label(root, text=str(bytes_sum)+"bytesを\n換算してみました。",font=('MS ゴシック', 12))
l_title.pack()
l_kb = tk.Label(text="KB")
l_kb.place(x=230, y=80)
l_mb = tk.Label(text="MB")
l_mb.place(x=230, y=130)
l_gb = tk.Label(text="GB")
l_gb.place(x=230, y=180)
l_tb = tk.Label(text="TB")
l_tb.place(x=230, y=230)
tb_kb = tk.Entry(width=25)
tb_kb.place(x=60, y=80)
tb_kb.insert(tk.END,kb)
tb_mb = tk.Entry(width=25)
tb_mb.place(x=60, y=130)
tb_mb.insert(tk.END,mb)
tb_gb = tk.Entry(width=25)
tb_gb.place(x=60, y=180)
tb_gb.insert(tk.END,gb)
tb_tb = tk.Entry(width=25)
tb_tb.place(x=60, y=230)
tb_tb.insert(tk.END,tb)
quit_btn = tk.Button(text = "close", command = root.destroy)
quit_btn.place(x=60, y=280, width=155)
root.mainloop()
if __name__ == '__main__':
bytes_conversion(simpledialog.askinteger(None, "bytesを入力してください。"))
tkinterメモ
tkinterはPythonの標準ライブラリなのでpipでインストールすることなく、
使用できるのでimportだけしましょう。
import tkinter as tk import tkinter.simpledialog as simpledialog
Tk()はメインのウィンドウを作成しています。
title()でウィンドウのタイトルタイトルを指定しています。
geometry()でウィンドウサイズとウィンドウを表示させる座標を指定しています。
root = tk.Tk() root.title("bytesの換算") root.geometry("300x350+400+300")
ここではラベルを作成しています。
ウィンドウに表示させるテキスト文字列を指定しています。
Label()ではfont=()でフォントの指定、文字サイズの変更などができます。
place()で表示させたい座標を指定します。
l_title = tk.Label(root, text=str(bytes_sum)+"bytesを\n換算してみました。",font=('MS ゴシック', 12)) l_title.pack() l_kb = tk.Label(text="KB") l_kb.place(x=230, y=80)
関数として定義したbytes_conversion()内の以下ではテキストボックスを定義しています。
Entry()でテキストボックスの幅(width)を指定しています。
insert()で換算したbytesをテキストボックスに入力します。
ENDはテキストボックスの末尾に値を入れるのに使用します。
tb_kb = tk.Entry(width=25) tb_kb.place(x=60, y=80) tb_kb.insert(tk.END,kb)
ウィンドウを閉じるボタンを作成しています。
destroyはmainloop()を停止させてくれるようです。
ただ、これが正しい終わらせ方なのかは微妙なところでまだまだ調査が必要そうです。
quit_btn = tk.Button(text = "close", command = root.destroy) quit_btn.place(x=60, y=280, width=155)
mainloop()は上で定義したラベルやテキストボックスなどの処理をウィンドウに反映してくれます。
詳細は以下のサイトがとても分かりやすかったです。
【Python】tkinterのmainloopについて解説
root.mainloop()
simpledialogはユーザーからの入力を促すダイアログを表示します。
simpledialog.askinteger()のほかにも以下の関数があります。
simpledialog.askfloat()、tkinter.simpledialog.askstring()
simpledialog.askinteger()で整数以外を入力し、実行すると以下のメッセージが表示されます。
bytes_conversion(simpledialog.askinteger(None, "bytesを入力してください。"))
今回はtkinterを初めて使ってみましたが
思ったよりも手軽に使えて便利だと感じました。
もっと調べれば色々なことができそうなので
もう少し極めてから再度投稿してみようと思います。
コメント