【Python】tkinterの使い方入門。計算機GUIアプリの作成に挑戦!プログラミング初心者、Python入門から独学で始めてどこまで学べる?Python入門編Python応用編データ分析入門編OpenCV入門編JavaScript編お問い合わせスポンサーリンク【Python】tkinterの使い方入門。2018.10.18スポンサーリンクここでは、tkinterのパッケージを使ってGUIアプリを作ってみましょう。Pythonのグラフィックスに関してはturtleモジュールも扱いました。【Python】turtleグラフィックスでお絵かき入門Pythonにはタートルグラフィックスというものがあり、子供にプログラミングを紹介する時などによく利用されます。turtleモジュールをインポートして簡単に図形を描いて楽しむことができます。描いたり、コードを変更してみるのも有益です。code-graffiti.com2018.10.09これはお絵かきの入門的なものでした。ツールキットをPythonで利用するためのインタフェースです。Pythonの一部ではありません)ここではもう少し複雑なGUIを使った操作をtkinterを使ってやってみたいと思います。プログラムtkinterを説明して行くにはどこから始めるか難しいところですが、簡単なコードを見てどういうものが理解していきます。細かい部分は実践して行く中でドキュメントなどで確認して行けば良いでしょう。プログラム」というものが例として示されています。ドキュメントdocs.python.jpそのコードは以下のとおり。Application(master=root)app.mainloop()これを実行するとこんなアプリが立ち上がります。小さなものが表示されるので、はっきり言って「なんじゃこりゃ?」なアプリです。meのところをクリックするとターミナルにメッセージが表示されます。3回クリックしてみました。QUITをクリックするとアプリが終了します、単にそれだけのアプリです。簡単にコードを解説してみましょう。tkinterのもっとも単純化した形はこちらになります。tkinter.Tk()root.mainloop()tkinterを読み込んで、Tk()をオブジェクト化してmainloop()で表示する。これに、いろいろと表示や機能を加えてるコードを追加していくことになります。上のコードを見て行きましょう。Application(master=root)app.mainloop()tkinterでアプリを作る時のパターンとして、最初と最後はこういう形というのが使い方の基本と考えておけばいいでしょう。tkinterをtkとしてインポート。classのApplication()で初期化と各種の設定をします。tk.Tk()をオブジェクトにしてrootとし、Application()にmasterとしてrootを渡し、これをmainloop()としてアプリを実行(表示)するという流れです。Application()クラス内のメソッドを順に見ていきます。super().__init__(master)self.pack()self.create_widgets()初期化メソッドの中にpack()がありますが、これでアプリのボタンなどの配置を制御します。create_widgets()は別に定義してアプリの中身を作ります。次のcreate_widgets()を見ていきます。everyone!")実行したアプリの表示と見比べながら見ていくといいと思います。hi_thereとしてメッセージ表示ボタンを作っていきます。tk.Button()でボタンを生成します。[“text”]として、アプリに表示する文を作り、[“command”]でsay_hiメソッドを実行。これはあとで定義します。pack()でこの部分をどう表示するか調整します。ここでは”top”ということで、上側に表示です。次はquitでアプリを終了させるボタンを作ります。tk.Button()でボタンを生成して、表示textを”QUIT”、文字の色をred(赤)にして、commandをroot.destroyでアプリを終了させます。pack()でこのボタンの位置を”bottom”にしています。あとは先ほど触れたsay_hi()の定義です。everyone!")メッセージを表示するコードになっています。プログラムのコードの流れです。アプリがショボすぎですね。何か作ってみましょう。計算機がプログラムの練習の定番だと思いますので、簡単な計算機をtkinterで作ってみようと思います。スポンサーリンクtkinterで作る計算機の完成イメージでは、tkinterを使ってGUIアプリを作ってみましょう。tkinterの使い方やプログラミングの練習になると言われている計算機を作ってみましょう。細かいところまでは作りこみませんので簡単な電卓ということになります。こんな計算機を作ることにします。この電卓の配置は、Macの電卓の配置を参考にしています。Macの計算機には[+/-]のボタンがありますが、プログラミングが複雑になってくるので、ここでは簡単に1文字削除の機能などにしています。ボタンの配置にrowとcolumnを考える必要があるので、次のように位置を確認しておきます。この位置関係を材料にコードを書いていきます。スポンサーリンク計算機のコードを書くそれではコードを書いていきましょう。上の完成アプリと配置イメージも見比べながら書いてみましょう。tk.Menu(self.master)self.master.config(menu=self.menu_bar)self.create_widgets()tkinterのインポートから初期化の部分は先ほどと一緒です。pack()のかわりに、ここではボタンの位置を細かく指定するのでgeometry()を使っています。アプリのタイトルにtitle()を使って「計算機」と表示させます。Entry()で入力数字の表示欄を作ります。justify=”right”で右寄せで表示します。Menu()でPCのメニューバーのところに表示させるようにします。config()でメニュー項目を設定します。create_widgets()で各種ボタンを設定。これは後ほど定義します。self.value)ここは、実際にコードを書いていくに当たっては、ここからではなく後ろの方のコードのボタンの配置などから書いていく方が流れとしてはわかり易いかもしれません。そのあたりは後のコードと見比べて考えて見てください。ここは上から説明していきます。input()ですが、ここで各数字などのボタンを押したアクションを指定します。entryの表示欄の一番最後に押したボタンの数字などをinsertします。最後にinsertすることで続けて入力したものが表示できます。clear_all()で表示を全削除します。電卓の[AC]の部分です。delete()で0から最後まで全ての値を削除するというコードになっています。clear_one()で1文字削除します。電卓の[C]の部分です。get()で入力されたものをtxtに一旦保持しておきます。delete()で0から最後まで削除して、insertで先ほどのtxtを表示するのですが、0から最後の一個手前をtxt[:-1]と指定することで1文字を削除しています。equals()で[=]の部分を設定します。入力されている文字列をget()で取得し、eval()で計算式と評価させます。eval()は、第1引数をPythonでの式として解析して評価する関数です。一緒に、計算式にならない文字列÷、×、%をreplece()で本来の演算子に置き換えています。表示をdelete()で削除して、再度置き換えて計算した値をinsertで挿入して表示させます。今度はcreate_widgets()で各種表示を設定していきます。column=2)まず、ファイルメニューです。Menu()で最初に定義したmenu_barを組み込んでいきます。add_command()で「閉じる」のラベルと、quitでアプリを終了するコマンドを設定します。add_cascade()でメニューがプルダウン表示されるようにします。entry.grid()で入力表示欄の位置を設定しています。最初に示したrowとcolumnの位置を参考にすればやっていることがわかるでしょう。padyはy軸方向の外枠の幅です。focus_set()で入力待ちの表示がされます。Button()にそれぞれ設定していきます。textにボタンの表示するラベルを指定します。withでボタンの幅を指定し、commandにはここではlambdaを使って関数を与えています。textで与えたラベルの位置をgrid()を使ってrowとcolumnで指定しています。あとは全てのボタンを同様に設定していけばいいですね。column=3)[0]の部分はボタンの幅とcolumnの長さが他と違うので調整しています。[=]のところは、input()ではなく、equalsを使っています。column=3)残りの記号の部分です。commandの部分がそれぞれ違います。最後に、お決まりごとの部分を記述して終わりです。Application(master=root)app.mainloop()この部分は最初の冒頭部分と一緒に書いて、間にコードを入力していった方がいいかもしれませんね。すれば、入力の途中でコードを実行してボタンの位置などの表示を確認しながら調整することができますからね。いうことで、これで簡易な計算機の完成です。このコードを実行してみると、計算機として本当に機能するかな?スポンサーリンク作った計算機の全コード最後にコード全体を示しておきます。Application(master=root)app.mainloop()以上です。ボタンのコードの順番をみやすく書く工夫も必要かもしれません。スポンサーリンクまとめここではPythonのtkinterを扱いました。ツールキットをPythonで利用するためのインタフェースです。これを使って簡単なアプリの確認と、簡易な電卓のアプリのコードを書いてみました。コードとアプリを対応させながら見ていくのも良いと思います。(追記)AnacondaのPython3.7はtkinterに不具合が生じることもあるようです。Python3.7でTkinter等に不具合?MacのAnacondaをアンインストールする方法を扱います。Python3.7にcondaでアップデートすると、TkinterやIDLEを起動するとMacがログアウトして使えない症状が出ました。Anacondaをアンインストールして公式サイトのPythonで代用します。code-graffiti.com2019.10.03Python公式サイトのものをインストールすれば問題なくtkinterは利用できます。zipfilePythonを使ってファイルやフォルダをまとめて圧縮したり、それを展開する方法を見ていきます。この操作には、tarfileで行う方法と、zipfileで行う方法があります。どちらも同じような操作なので違いも含めて理解しておきましょう。TCPPythonのsoketモジュールを使ってデータのソケット通信を簡単にやってみました。ネットワークがどのような仕組みで動いているのか通常は気にしませんが、知っておくとエラー発生時などに役に立つことがあります。FLANNOpenCVを使ったPythonでの画像処理について、画像認識について特徴量マッチングを扱います。これは二枚目の画像中の特徴点を検出してマッチングする方法です。総当たりマッチングのORB、DIFTとFLANNベースのマッチングを扱います。【Python】OpenCVのHarrisコーナー検出とShi-Tomasiコーナー検出OpenCVを使ったPythonでの画像処理について、ここではコーナー検出を学びます。Harrisコーナー検出でcornerHarris()を、Shi-Tomasiコーナー検出でgoodFeaturesToTrack()を扱います。【Python】Matplotlibの基本的なグラフ描画の使い方の速習Matplotlibは、Pythonと科学計算用ライブラリであるNumPyを使ったデータでグラフを描画するライブラリです。ここではMatplotlibの基本的な使い方を一気に学んでいきます。ここでは基本的なグラフの描画をしてみます。【Python】OpenCVで動画に図形を描画するOpenCVを使ったPythonでの動画処理について、webカメラで撮影しているストリーム動画の画面にマウスで図形を描写してみます。動画上の固定した位置と任意の位置へ四角形を描写しますが、setMouseCallback()を使います。notebookの基本的な使い方。notebookの基本的な使い方。f-stringsスポンサーリンクタイトルとURLをコピーしました。