PythonのtkinterでGUI入門

PythonのtkinterでGUI入門

PythonではGUIプログラムも作成することができてしまいます。

バージョン
v3.6.2

tkinterをimportすれば簡単に作成できます。

sample001.py

実行するとウィンドウが開きます。

PythonでGUI入門

右上の✖印で閉じます。

ウィンドウのタイトルが「tk」になっているので変更します。デフォルトウィンドウサイズも変更してみます。

sample001.py

実行するとウィンドウが開きます。

PythonでGUI入門

ウィンドウのタイトルとデフォルトウィンドウサイズが変わっていることが確認できます。

geometry関数を使ってサイズを指定することもできます。
引数は文字列ですが、”縦x横”です。xはエックスです。
実行するとウィンドウが開きます。

PythonでGUI入門

テキストラベルをウィンドウに表示する

ウィンドウにラベルを表示してみます。

実行するとウィンドウが開きます。

PythonでGUI入門

変数textをx座標=0,y座標=0の場所に表示しています。

テキストボックスを表示する

tkinter.Entryを使ってテキストボックスを表示します。

実行するとウィンドウが開きます。

PythonでGUI入門

tkinter.Entry(width=8, bd=4)というようにbd=4とするとテキストボックスのボーダーが立体的になります。

PythonでGUI入門

テキストボックスにデフォルト値を入力しておく

テキストボックスは普通に表示すれば空ですが、デフォルト値を設定することもできます。

insert()関数を使用します。

実行するとテキストボックスにデフォルト値が入っています。

PythonでGUI入門

テキストボックスの入力値をクリアする

delete()関数を使用してテキストボックスの入力値をクリアすることができます。

クリアするにはボタン押下して、そのイベントで削除します。ボタンについては後述します。

実行して、ボタンを押すと、テキスト欄が全クリアされます。

0~tkinter.END(最後)まで削除するという意味です。

text.delete(0, 1)というように記述すると1文字ずつ削除されていきます。

PythonでGUI入門

ボタンを表示する

tkinter.Buttonでボタンを表示することができます。

実行するとウィンドウが開きます。

PythonでGUI入門

ボタンのボーダーを変更することもできます。bd=数値とすることで立体感を出すことができます。

実行するとウィンドウが開きます。

PythonでGUI入門

でもこれだとボタン押下時のイベントがありません。

btn["command"] = 関数名とすることによってボタン押下時の処理を関数で実行させるようにします。関数名の()はつけないので注意です。

実行するとウィンドウが開き、ボタンを押下するとタイトルが変わります。

PythonでGUI入門

今度はボタン押下時にラベルの表示を変更してみましょう。

label["text"] = "文字列"とすることでラベルを変更することができます。

ボタンはcommandに対し、labelはtextになります。

実行するとウィンドウが開き、ボタンを押下するとラベルが変わります。

PythonでGUI入門

テキストボックスの入力値を取得する

テキストボックスに入力した値を取得する方法です。

テキストボックスのオブジェクトのget()を使用して取得します。

実行するとウィンドウが開き、ボタンを押下するとテキストボックスに入力した内容が表示されます。

PythonでGUI入門

Canvasを使う

Canvasを使えば画像やグラフを描画することができます。

とりあえずCanvasだけを表示してみます。

実行するとウィンドウが開き、Canvas部分が背景が青色で表示されます。わかりやすいようにx軸,y軸をずらしています。

PythonでGUI入門

Canvasに画像を描画する

先ほどCanvasを配置しましたがこのCanvas内に画像(gifまたはpgm)を配置してみます。

画像を表示するにはPhotoImage()で画像オブジェクトを読み込みます。

次にCanvasにcreate_image()関数を使用して描画します。

create_image関数の引数です。

引数 意味
第一引数 x軸
第二引数 y軸
第三引数 画像ファイルパス
第四引数 タグ名(省略可)

実行するとウィンドウが開き、Canvas部分に画像が表示されます。

PythonでGUI入門

参考サイト

import tkinterよりfrom tkinter import ~~

import tkinterと書いていましたが

と書いたりすることもできます。こうすると、tkinter.Tk()と書かずにTk()と書けるのでコード量が少なくなります。

複数ある場合はカンマ区切りで書けばよいです。

time.sleep()でスリープする

from time import sleepを使えば、スリープさせることができます。

sleep(5)とすれば5秒スリープします。ミリ秒単位などでスリープさせたい場合はsleep(0.001)とすればミリ秒単位になります。但しマイナス値はNGです。

実行するとウィンドウが開き、3秒スリープされていることが確認できます。

ループする前にupdate()関数を呼んでいますが、これは強制的に画面を更新してくれます。

PythonでGUI入門

画像を移動する

Canvas内の画像を移動させることができます。coords()関数を使用します。

使い方は以下のような感じです。

ここで、タグ名というのは、canvas.create_image()関数の第4引数になります。

実行するとウィンドウが開き、ボタンを押すと画像が移動します。

PythonでGUI入門

ファイルダイアログを開く

filedialog.askopenfilename()関数を使用することによって、ファイルダイアログを開くことができます。

実行するとウィンドウが開き、ボタンを押すとファイルダイアログが開きます。

PythonでGUI入門

初期表示のディレクトリをカレントディレクトリにしたい場合はimport osをします。

実行するとウィンドウが開き、ボタンを押すとカレントディレクトリでファイルダイアログが開きます。

PythonでGUI入門

チェックボックスを表示する

チェックボックスを表示するにはCheckbutton()関数を使用します。

実行すると指定した座標にチェックボックスが表示されます。

PythonでGUI入門

チェックボックスをデフォルトでオンにしてみます。

BooleanVar()関数を以下のように使用します。

このval変数をvariable = valというようにセットします。

実行するとデフォルトでチェックされます。

PythonでGUI入門

ダイアログを表示する

messegeBox()関数を使用すればダイアログを表示することができます。

messagebox.showinfoの使い方は以下の通りです。

第一引数…タイトル

第二引数… メッセージ

実行してボタンを押下すると、メッセージが表示されます。

ちなみに戻り値は「ok」です。

PythonでGUI入門

メニューバーを表示する

Menu()関数を使用してメニューバーを表示します。add_command()関数でメニュー追加していきます。

実行するとメニューバーが表示されているのが確認できます。

PythonでGUI入門

Exitを押すと、command=root.quitが実行されるのでウィンドウが閉じます。

今度はメニューらしくFilesを押すといくつかメニューを表示してみたいと思います。

add_cascade()関数の引数でmenu=hogehoge`みたいな感じでカスケードすれば表示されます。

PythonでGUI入門

リストボックスを表示する

Listbox()関数を使用してリストボックスを表示します。

実行するとリストボックスが表示されます。

PythonのtkinterでGUI入門

リストボックスにはモード(selectmode)があって、デフォルトは一つしか選択ができないBROWSEモードになります。

モード 意味
browse デフォルト値で単一選択
single マウスの左クリックで単一選択
multiple 複数選択可能
extended 複数選択可能でctrl + クリック,shift + クリックが可

multipleで複数選択してみます。

実行すると複数選択することが可能になります。

PythonのtkinterでGUI入門

コンボボックスを表示する

コンボボックスを表示するにはttk.Combobox()関数を使用して表示します。

実行するとコンボボックスが表示されます。初期値をBarにしてセットしていますが省略可能です。このコンボボックスではフリーフォーマットで入力することも可能です。

PythonのtkinterでGUI入門

コンボボックスの手入力を不可にする

デフォルトではコンボボックスで手入力で値を入れることができますが、

state="readonly"を指定することによって手入力を不可にすることができます。

実行すると、コンボボックスが表示されますが手入力はできない状態になります。

PythonのtkinterでGUI入門

Pythonの文法などは「Python とDjango の環境と基礎入門と使い方」を参照してください。

スポンサーリンク
  • このエントリーをはてなブックマークに追加
スポンサーリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA