はじめに
どうもMizokeiです。
Pythonでプログラミングを勉強していると、画面を作ってみたいなと思うことがあるかもしれません。
今回は、簡単なクライアントツールの最初の一歩として画面を作るコードを書いてみたいと思います。実行環境は以下です。
実行環境
- Windows10 64bit
- Python 3.7
一瞬で画面の枠組みが作れる
まずは以下のコードを実行してみます。
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#!/usr/bin/env python # -*- coding: utf-8 -*- ''' pythonのライブラリtkinterを使用して画面を作成する。 ''' # # 標準ライブラリ # #画面開発 import Tkinter #メイン if __name__ == '__main__': root = Tkinter.Tk() root.mainloop() |
すると…。
まっさらなウィンドウが表示されました。めちゃくちゃ簡単ですよね。
今回は、Pythonの標準ライブラリである、tkinterを使用しました。最新版のPython3.7をインストールした方は、特にpipなどを使用してインストールしなくとも、すでに環境は整っているかと思います。
0 1 2 3 |
#画面開発 import Tkinter |
以下のコードで、tkinterを初期化していますね。
0 1 2 |
root = Tkinter.Tk() |
そして、以下のコードで画面を表示、という具合です。
0 1 2 |
root.mainloop() |
肉付けしてみる
これだけだと寂しいので、いくつかパーツを付けてみましょう。
パスワード確認ウィンドウ
パスワードを入力してOKかNOを判定する確認ツールを作ってみましょうか。
以下のコードを追加します。まずは、パスワードを確認することがわかるようにウィンドウにタイトルを設定しましょう。
0 1 2 3 |
#タイトルの設定 root.title(u"パスワードの確認") |
それから、画面のサイズですね。ちょうど良さそうなサイズで設定しておきましょう。300×130という文字列を与えていますが、幅✕高さを意味しているので、値の記載に注意しましょう。
0 1 2 3 |
#画面サイズの設定 root.geometry("300x130") |
ここまでを実行すると…
いい感じですね。でもまだ、肝心の入力するテキストフィールドや、ボタンなどがありませんね。
パーツを追加していく
パスワードを入力することをアナウンスするためのラベルを追加しましょうか。
ラベルを追加するコード
以下の2種類のコードで、ラベルの設定は完了します。
0 1 2 3 4 5 6 7 8 9 10 11 |
#ラベルの設定 password_label = Tkinter.Label( text='パスワードを確認しますので、入力してください。' ) #位置の設定 password_label.place( x=30, y=10 ) |
パスワード入力のためのテキストフィールドの追加
次に、パスワードを入力するためのテキストフィールドを追加しましょう。以下のコードを追加します。
0 1 2 3 4 5 6 7 8 9 10 11 12 13 |
#パスワード入力用テキストフィールドの設定 global password_input password_input = Tkinter.Entry( width=20, show='*' ) #位置の設定 password_input.place( x=90, y=40 ) |
パスワード確認用ボタンの追加
あとは、パスワードを確認を行わせるボタンの設定です。こちらも数行です。
0 1 2 3 4 5 6 7 8 9 10 11 |
#ボタンの設定 password_check_button = Tkinter.Button( text=u'パスワードの確認' ) #位置の設定 password_check_button.place( x=110, y=70 ) |
判定結果確認用ボタンの追加
最後に判定結果を表示するためのラベルの設定をします。
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#ラベルの設定 global checked_label global label_text label_text = Tkinter.StringVar() label_text.set('???') checked_label = Tkinter.Label( textvariable=label_text ) #位置の設定 checked_label.place( x=130, y=100 ) |
ボタンを押したときの処理
入力させたパスワードの確認を行わせたいので、以下の2点の設定を追加します。
- 正解のパスワード
- パスワード確認後のラベル更新
正解のパスワードは当然ですね。これがないと、合っているのか間違っているのかわかりませんからね。2020年にちなんで、2020と設定してみます。
0 1 2 3 |
#正しいパスワード CORRECT_PASSWORD = '2020' |
ボタンを押したときの処理を追記します。パスワードと一致すれば、「OK!」、間違っている場合には、「NO!」とラベルを更新します。
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#パスワードの確認 def check_password(): """ ボタンをクリックした際に処理します。 入力されたパスワードを確認します。 Parameters ---------- なし Result ---------- なし """ #パスワードの内容によって、ラベルを更新 if password_input.get() == CORRECT_PASSWORD: label_text.set('OK!') else: label_text.set('NO!') |
ボタンクリック時の処理に指定する
ただし、これだけだと、ボタンは反応しません。ボタンをクリックすると、パスワードの確認処理が走るように、ボタンの設定時のパラメータで、commandの値を、関数名check_passwordに設定します。これで、ボタンの連動が可能になります。
0 1 2 3 4 5 6 |
#ボタンの設定 password_check_button = Tkinter.Button( text=u'パスワードの確認', command=check_password ) |
実行して確認する
実行して確認してみましょうか。起動時は「???」だったラベルが入力状態に応じて、「OK!」「NO!」に切り替わっていますね。
以下、全量のコードです。コメントなどで説明を付けたことで、行数が増えていますが、コメント等を消すと数行で、簡単な画面を持つクライアントツールが作れちゃいました。
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
#!/usr/bin/env python # -*- coding: utf-8 -*- ''' pythonのライブラリtkinterを使用して画面を作成する。 ''' # # 標準ライブラリ # #画面開発 import Tkinter #正しいパスワード CORRECT_PASSWORD = '2020' #パスワードの確認 def check_password(): """ ボタンをクリックした際に処理します。 入力されたパスワードを確認します。 Parameters ---------- なし Result ---------- なし """ #パスワードの内容によって、ラベルを更新 if password_input.get() == CORRECT_PASSWORD: label_text.set('OK!') else: label_text.set('NO!') #メイン if __name__ == '__main__': #tkinter初期化 root = Tkinter.Tk() #タイトルの設定 root.title(u"パスワードの確認") #画面サイズの設定 root.geometry("300x130") #ラベルの設定 password_label = Tkinter.Label( text='パスワードを確認しますので、入力してください。' ) #位置の設定 password_label.place( x=30, y=10 ) #パスワード入力用テキストフィールドの設定 global password_input password_input = Tkinter.Entry( width=20, show='*' ) #位置の設定 password_input.place( x=90, y=40 ) #ボタンの設定 password_check_button = Tkinter.Button( text=u'パスワードの確認', command=check_password ) #位置の設定 password_check_button.place( x=110, y=70 ) #ラベルの設定 global label_text label_text = Tkinter.StringVar() label_text.set('???') checked_label = Tkinter.Label( textvariable=label_text ) #位置の設定 checked_label.place( x=130, y=100 ) #表示 root.mainloop() |
コメント無しバージョンです。これだけの短さでツールが作れるのは便利ですね。
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
#!/usr/bin/env python # -*- coding: utf-8 -*- import Tkinter CORRECT_PASSWORD = '2020' def check_password(): if password_input.get() == CORRECT_PASSWORD: label_text.set('OK!') else: label_text.set('NO!') if __name__ == '__main__': root = Tkinter.Tk() root.title(u"パスワードの確認") root.geometry("300x130") password_label = Tkinter.Label(text='パスワードを確認しますので、入力してください。') password_label.place(x=30,y=10) global password_input password_input = Tkinter.Entry(width=20,show='*') password_input.place(x=90,y=40) password_check_button = Tkinter.Button(text=u'パスワードの確認',command=check_password) password_check_button.place(x=110,y=70) global label_text label_text = Tkinter.StringVar() label_text.set('???') checked_label = Tkinter.Label(textvariable=label_text) checked_label.place(x=130,y=100) root.mainloop() |
この記事が誰かのお役に立てれば幸いです。それでは。
関連記事
【Python】ピクセル値を操作して画像を作成してみよう【画像処理】
【Python×業務自動化】Excelを起動する【RPA】
【Python超入門】クラスを作成してみよう