PythonでGUI(ウィンドウ)アプリを作成する方法:TKinterのインストールから使い方

Python
この記事は約9分で読めます。
スポンサーリンク

解説

ではそれぞれを解説していきます。

フォームの設定と描画

まずはフォームの設定と描画です。正式名称はわかりませんが、Windowsの.netでは、フォームと呼ばれるメインのウィンドウのことです。

このフォームにかかわる部分が↓です。

    root = tkinter.Tk()        # インスタンスを生成
    root.title(u"Test")        # タイトル
    root.geometry("300x100")   # Windowsサイズを設定

    root.mainloop()            # フォームの描画開始

root にまずインスタンスを生成し、描画の際のオプションを設定します。

Title : 表示される ウィンドウ の上側の文字を設定

geometry : 画面のサイズを指定

今回は、 “300×100” ですので、幅が300で縦が100で指定しています。

他にもいろいろとオプションを設定はありますが、今回はこの2つのみです。

あとは、 root.mainloop() ですが、これで画面が表示されます。
その名の通り、無限ループしてくれ、「×」ボタンが押されるまで描画をし続けてくれます。

では続いてラベルです。

ラベルの設置

ラベルにかかわる部分は以下です。

  # Label
    text = tkinter.StringVar()
    text.set("0")

    label1 = tkinter.Label(root, textvariable  = text )      # ラベル生成  初期テキストを設定
    label1.pack()                                            # 描画位置を中央 上 詰めでセット

まず、ラベルに設定する文字の設定用に、textという文字を作成しています。
それがこちら。 StringVar 型のインスタンスを生成して、文字の”0″を設定しています。

    text = tkinter.StringVar()
    text.set("0")

続いて、上のtextをしていてラベルを生成するのが以下です。

label1 = tkinter.Label(root, textvariable  = text )      # ラベル生成  初期テキストを設定

そして、最後にlabel1.pack()で描画位置を指定して画面に登録しています。
画面への登録としては、何種類かありますが今回はpcakで登録をしています。

packの場合は以下のようなオプションがあります。デフォルトではTOPになります。

  • TOP 上詰めの中央に表示
  • BOTTOM 下詰めの中央に表示
  • LEFT 左詰めの中央に表示
  • RIGHT 右詰めの中央に表示

※位置は、その時の描画の状態によって変わるようですので、少し注意が必要です。

では続いてボタンの設置とコールバックの設定です

ボタンの設置とコールバック設定

ボタンの設置とコールバックの設定部分は以下です。

 # Button
    button1 = tkinter.Button(root, text="Click") # ボタンを生成 
    button1.configure(width=30,height=3)    # Buttonのサイズを指定
    button1.place(x=40,y=30)                # 描画位置を指定してセット
    
    def bt_click( ):                      # ボタンクリックのコールバック関数
        now_str = text.get()              # 現在テキストを取得
        now_int = int(now_str) + 1        # データをintに変換して、インクリメント
        text.set( str(now_int) )          # 値を再セット
        
    button1.configure(command = bt_click )     # Buttonクリック時のコールバック設定

一番上の↓はインスタンスを生成しています。

button1 = tkinter.Button(root, text="Click") # ボタンを生成 

ここでは、ボタンのテキストを”Click”に設定しているだけです。この生成の時に、引数をふやしていけば、この後に紹介するオプションの設定も同時に行えます。

オプション設定
その他のオプションも色々ありますが、今回は二つだけです。

ボタンのサイズ指定しています。
configure関数を使って、オプションは追加します。
widthとheigthの値を設定します。

button1.configure(width=30,height=3)    # Buttonのサイズを指定

続いてボタンに位置指定です。
位置の指定は、 place 関数を使って行います。
”x”と”y”に数値を入れて、描画位置を指定します。

button1.place(x=40,y=30)                # 描画位置を指定してセット


あとは、コールバック関数です。
コールバック関数とは、何かユーザがアクションをした時に呼び出される関数のことです。
ここでは、ボタンがクリックされた際に、設定したコールバック関数が呼び出されます。

bt_click という関数を生成して、それをコールバックとして設定しています。
それが以下です。コールバック関数の設定は、commandという引数に登録します。

  button1.configure(command = bt_click )     # Buttonクリック時のコールバック設定

ちょっと今回のコードを見て、関数の生成が変なところにあって気持ち悪いかもしれませんが、bt_click 関数の中で、 text 変数を操作したいので、こういった形としております。
これでボタンをクリックすれば、 bt_click に飛んでくれます。
※本当は引数にtextを渡して、いつも通りの関数の記載がしたかったのですが、やり方がパッとわからなかったので、こういった形になりました。ただ、こういった柔軟性?が、Pythonのいいところではないかと私は思います。

とここまで書いて気が付きましたが、おそらく text をglobalにすれば簡単にできましたね。
ただ、globalにする場合は、初期値をいれないといけないんですが、何を入れればいいのか毎度わからないです。
※型を宣言しないPython独特の悩みですね。C言語だととりあえずvoid宣言しておけば、実態かポインタかを気をつければ何とでもなりますもんね。これは、Pythonの弱みの部分ですね。

簡単にですが、PythonでGUIを使用する方法を記載してみました。
VisualStudioやQTみたいに、GUIのツールを使用してマウス操作で簡単にGUIを作っていくのは難しいですが、比較的簡単にGUIアプリも作ることができます。
私は、ログの解析ツールなんかは、テキストボックスとボタンだけを設置してPythonとtkinterの組み合わせで行ったりしています。
Pythonは、文字列を扱うのに非常に便利なので、GUIが使えればこういった場面で重宝します。
みなさんもぜひ一度ためしてみてください。

2021/12/05 追記
このTkinterのGUIを簡単に作成できるツール PAGEについて、以下にまとめましたので、興味ある方は見てみてください。

Pythonについて勉強したい人は以下がおすすめです。私も持っていてたまに眺めて勉強していますものですのでぜひ購入して学習してみてください。

コメント

タイトルとURLをコピーしました