python PR

pythonでtkinterを使う方法【Anaconda編】~サンプルコード+図解で解説~

pythonでtkinterを使う方法【Anaconda編】~サンプルコード+図解で解説~
記事内に商品プロモーションを含む場合があります

pthonを学び始める一つにGUIアプリを作成したいから

という方もいるのではないでしょうか?

pythonではGUIアプリを作成するためのライブラリがいくつか用意されています

  • tkinter
  • kivy
  • PyQt
  • wxPython
  • PySide

今回はGUIアプリを作成するためtkinterの使い方について解説をしていきたいと思います

インストール方法から実際のサンプルコードでGUIアプリを作成するところまで解説していきたいと思いますので、参考にしてみてください

python以外でGUIアプリが作れるプログラミング言語とは?
Python以外にもある?GUIアプリを作れるプログラミング言語についてパソコンで利用することができるGUIアプリを作成するのに、python以外にもあるのか、調べてみました。 個人的には、時代の流れ的にはpythonを使う、という選択ししかなかったかつ、データ解析をしたかった、という理由でpythonを選択しています。 しかし、それ以外にもGUIアプリを作成することができる言語があるので、いくつか紹介していきたいと思います。...

Anacondaを使ってtkinterを使う

まずは「Anaconda-Navigator」を起動させます

Anacondaのインストール方法はこちらから

Anacondaでtkinterを使うEnviromentsをクリック
Anacondaでtkinterを使う2「Not installed」から「tk」を探す
もしくは「Search Packages」から「tk」の検索をする

 

これでAnaconda上でtkinterを使用することができるようになります

pythonのtkinterとは?

tkinterを使うことで以下のようなGUIアプリを作成することができます

python tkinter

私が作成しているのはGUIアプリはtkinterを使って作成しています

tkinterはpythonの標準ライブラリなので、特別な環境構築が必要ない、とされていたため、使用し始めました

tkinterを使えば確かに簡単にGUIアプリを作成することができますが、機能面での物足りなさを感じますが、クロスプラットフォームで動作可能なのはメリットでもあります

(クロスプラットフォーム:クロスプラットフォームとは、異なるプラットフォーム上で、同じ仕様のものを動かすことが出来るプログラムのこと)

tkinterのメリット1.python標準装備

tkinterの最大のメリットは、pythonで標準装備のGUIライブラリということです

標準装備なので、pythonの開発環境が入っていれば、簡単に作成することが可能です

他のGUIライブラリでは、インストールがうまくいかない場合やOSの環境によっては、操作が煩雑になることがあります

それに比べて、tkinterは標準装備のGUIライブラリなので、うまくいかないということがありません

なので、pythonを独学で学んでいる方にとっては、GUIアプリを作成するハードルがめちゃくちゃ低くなります

tkinterのメリット2.文法がシンプル

tkinterを使い始めて感じたのは、「python初心者の独学者でも簡単にGUIアプリ作れるじゃん!」ってことです

それだけtkinterを利用する上での、文法がシンプルであるということです

tkinterを使うことでpythonの言語自体の理解も深まりますし、GUIアプリも作れるし一石二鳥でした

実際に私が作成している統計ソフトは3ヶ月程度でかなり完成してきています

tkinterなら独学でも簡単にGUIアプリを作成することができるので、おすすめです

tkinterのデメリット1.機能面が乏しい

tkinterの文法はシンプルでpython独学者でも簡単にGUIアプリを作成することができますが、それゆえに、機能面の乏しさを感じることもあります

そのため、複雑なGUIアプリを作成したい場合には、あまり向いていません

tkinterのデメリット2.ウィジェットの配置などでコードが多くなりがち

GUIアプリを作成する際には、ウィジェットと呼ばれるパーツを配置していきます

tkinterではウィジェットを配置する際の種類やオプション、位置などを設定していかないといけないため、シンプルなコードが大量に発生します

そのため、シンプルなコードが乱立して、煩雑なコードになる、

という現象に見舞われます

tkinterのサンプルコードでGUIアプリを作ってみよう①

ではここからは、サンプルコードで実際にGUIアプリを作ってみましょう

今回作成するのは、テキストボックスに入力されている文字列を、ボタンがクリックされるたびにラベルに反映させる、というとても簡単なGUIアプリになります

# tkinterのインポート
import tkinter as tk

# rootメインウィンドウの設定
root = tk.Tk()
root.title("Frame")
root.geometry("300x300")

frame = tk.Frame(root)
frame.grid(row=0,column=1)
entry = tk.Entry(frame)
#StringVar変数を使う
var=tk.StringVar()

#entryに入力された値をvar(StringVar)にセットする
def btnclick():
    var.set(entry.get())

#ラベルに入力する文字列はvarに入力された値
label = tk.Label(frame, textvariable=var)

#ボタンがクリックされたら「def btnclickを実行する」
button = tk.Button(frame, text='ボタン',command=btnclick)

label.grid(row=0,column=2)
entry.grid(row=1,column=2)
button.grid(row=2,column=2)
root.mainloop()

今回はtextvariableを使って、動的に変更できるようにさせています

textvariableについてはこちらの記事も参考にしてください

Python tkinterのtextvariableについて〜サンプルコード+図解付き
Python tkinterのtextvariableについて〜サンプルコード+図解付きtkinterを使ってアプリを作成していると、文字入力を反映させる場面がよく出てきます。 このとき、textvariableを使うことでコードを簡単にすることができます。 今回はpythonのtkinterでtextvariableをどのように使うのかについて解説をしていきたいと思います。...

tkinterのサンプルコードでGUIアプリを作ってみよう②

続いて、冒頭の画像のようなGUIアプリをtkinterで作成してみましょう

import tkinter as tk

        
class ListboxSampleApp(tk.Frame):

    def __init__(self, app):
        super().__init__(app)
        self.pack()
        self.insert_item = tk.StringVar()
        #items = tk.StringVar()
        self.entry  =  tk.Entry(self,textvariable = self.insert_item)
        self.entry.pack()
        self.value_list=["aaa","bbb","ccc","ddd"]
        var=tk.StringVar(value=self.value_list)
        self.listbox =tk.Listbox(app, listvariable=var, height=5,selectmode="single")
        self.listbox.pack()
        Button1 = tk.Button(text=u'項目を追加するボタン', command=self.insertItem)
        Button1.pack()
        #self.listbox =tk.Listbox(app, listvariable=items, height=5,selectmode="single")
        #self.listbox.pack()
        button = tk.Button(app,text = "測定データを追加するボタン",fg='#ff0000',command=self.insertdata)
        button.pack()
        Button = tk.Button(text=u'項目を削除するボタン', width=50, command=self.deleteSelectedList)
        Button.pack()
        self.textbox=tk.Text()
        self.textbox.pack()

    def insertItem(self):
        """
        Entryに入力した文字列をリストボックスの最後に登録する
        """
        item = self.insert_item.get()
        if item == "":
            return
        self.listbox.insert(tk.END,item)

    
    def insertdata(self):
        item1 = self.insert_item.get()
        if item1 == "":
            return
        self.textbox.insert(tk.END,item1)
        
    def input_listbox(self,event):
        data=tk.StringVar(value=self.value_list)
        selectIdx=self.listbox.curselection()
        data.set(self.listbox.get(selectIdx))
        self.textbox.insert(tk.END,data)
    #listbox.bind("<<ListboxSelect>>",input_listbox)
    
    def deleteSelectedList(self):
        selectIndex=tk.ACTIVE
        self.listbox.delete(selectIndex)


if __name__ == '__main__':

    app  = tk.Tk()
    app.geometry("600x600")
    app.title("Listbox Insert Sample Program")
    frame = ListboxSampleApp(app)
    app.mainloop()

これだけでも起動しますが、コメントアウトしている部分を作動させるにはどうしたらいいのか考えてみてください

ここを理解できると、tkinterを使ったGUIアプリの可能性がかなり広がると思います

pythonの独学でつまづかない方法?

pythonを独学で進めていく上で、

「ひとまず何かしらの書籍に目を通したい」

「webで調べても全くわからない」

という状況が何度も何度でも出てくるかと思います。

そういう時に便利なのが、kindleとテラテイルです。

Kindleはご存知の通り、電子書籍です。

Kindleには多くのpython学習本が用意されており、無料で読むことができます。(たまに有料もあります)

ひとまずどういった書籍があるのか?

もしものために、書籍に目を通しておこう

という場合には、kindleの利用がおすすめです。

kindleでpythonの書籍を無料で読んでみる

おすすめプログラミングスクール

本を読んでもわからない場合には、プログラミングスクールに通うのも一つの方法です

以下がpythonを学ぶことができる、厳選したプログラミングスクールです

おすすめプログラミングスクール

DMMWEBCAMP
  • WEBCAMPはコスパ最強
  • WEBCAMPは初心者に優しい充実したサポート付き
  • 16週間プランを選択して、返金してもらおう
WEBCAMPの公式ページはこちら WEBCAMPの口コミ・評価はこちら
テックアカデミー  
  • テックアカデミーは費用対効果抜群
  • テックアカデミーのサポートは個人の能力に応じつつ、python初心者に優しい
  • まずは無料体験でテックアカデミーを知ってから受講を決める
テックアカデミーの公式ページはこちら テックアカデミーの口コミ・評価はこちら
キカガク
  • 多種多様なスキルコース
  • 初心者から専門家まで対象
  • 給付金利用で費用を抑えられる
キカガクの公式ページはこちら キカガクの口コミ・評価はこちら
Aidemy Premium
  • 完全オンラインで、時間や場所に縛られず学習したい
  • マンツーマン学習サポートにより実践に近い経験をしたい
  • 未経験から機械学習エンジニアになりたい
Aidemy Premiumの公式ページはこちら Aidemy Premiumの口コミ・評価はこちら
My Agile Privacy
This website uses technical and profiling cookies. Clicking on "Accept" authorises all profiling cookies. Clicking on "Refuse" or the X will refuse all profiling cookies. By clicking on "Customise" you can select which profiling cookies to activate.