LoginSignup
1
2

More than 3 years have passed since last update.

tkinterで超簡単にGUIアプリを作る

Posted at

前置き

Pythonの人気が上昇してきたためか、Pythonの需要が最近ではとても高まっています。Pythonでは機械学習などの人工知能に関する技術が強いイメージですが、GUIのアプリを作ることも出来ます。
Pythonを始めたばかりでライブラリ?モジュール?という方向けの記事なので、中級者の方には物足りないかもしれませんが、読んでいただけると嬉しいです。

ファイルの準備

tkinter-gui/
├ app.py
├ face.png

上のようにapp.pyを作成して下さい。フォルダ名を自分はtkinter-guiとしましたが、何でも良いです。
face.pngは以下の画像を保存してapp.pyと同じ場所において下さい。

image.png
face.png

コードを書く

app.py
# Tkinterモジュールの読み込み
import tkinter

# ウィンドウの生成
root = tkinter.Tk()
root.attributes("-topmost", True)
root.minsize(width=200, height=200)

# Frameウィジェットの生成
frame = tkinter.Frame(root, width=300, height=300, bg="black")
frame.propagate(False)
frame.pack()

# テキストのLabelウィジェットの生成
label= tkinter.Label(frame, text="Hello! How are you?", fg="white", bg="black", font=("", 16))
label.pack()

# 画像のLabelウィジェットの生成
import os
png = tkinter.PhotoImage(file=os.path.dirname(__file__)+"/face.png")
image = tkinter.Label(frame, image=png, bg="black")
image.pack()

# Entryウィジェットの生成
entry = tkinter.Entry(frame, width=20, bg="gray", fg="white")
entry.insert(0, "happy")
entry.pack()

# クリックイベント関数
def show_text():
    new_label = tkinter.Label(frame, text=entry.get(), fg="white", bg="black", font=("", 32))
    new_label.pack()
    entry.destroy()
    button.destroy()

# Buttonウィジェットの生成
button = tkinter.Button(frame, text="Say", bg="gray", fg="yellow", command=show_text)
button.pack()

# ウィジェットが配置されたウィンドウを表示
root.mainloop()

上のコードをapp.pyに書いて下さい。
その後、 app.pyを実行すると以下のようなウィンドウが立ち上がります。

image.png

トカゲがあなたの気分を聞いていますね。テキストボックスに入力した後にSayボタンを押して答えてあげましょう。

image.png

happyと答えることが出来ました。

最後に

アプリケーションに必要なのは、

  1. ユーザーからの入力をプログラムが受け取る
  2. 入力に対してプログラムが何らかの処理をする
  3. プログラムはユーザーに出力を返す

この流れです。

今回は、本当に必要最低限なアプリケーションとしての機能のみを実装しました。この上のコードを土台に色々と改変を施せば、電卓アプリなどを作ることも可能です。コードの1行1行が画面上に何を出力しているのかを理解し、自分だけのアプリケーションを作ってみましょう。

今回の記事の内容は、下のサイトでも詳しく説明しています。良かったら見て下さい。

【Tkinter入門】PythonでGUIアプリを作ってみよう!

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2