プログラミングの初心者向け独学基礎入門学習サイト

~programming website~

初心者でもできる!pythonを使ってウインドウで表示される検索アプリを作ってみよう!

約 1 分
初心者でもできる!pythonを使ってウインドウで表示される検索アプリを作ってみよう!

初心者でもできる!pythonを使ってウインドウで表示される検索アプリを作ってみよう!pythonを勉強していくとだんだんとこんな気持ちになりませんか?

コンソール上に表示されるちょっとしたアプリは作れたけど、なんか作ってる感がたりないんだよなー

私はなりました!!!
コンソール上で動くアプリはできたけど、なんか物足りない感。。
この気持ちはなんなんだろう。。

そうだ!!
普段使っているようにウインドウに表示されないからだ!!

私と同じような気持ちを抱いている方がいるかと思います!
※私しかそんなこと思っていなかったらごめんなさい。。

なので、初心者でもできるウィンドウ表示される簡単なアプリケーションを作ってみたいと思います!(^^)
ワクワクするねー!(この気持ち大事!!)

県庁所在地を簡単に検索できるアプリを作ってみよう!

今回は、都道府県を入力したら県庁所在地を教えてくれる検索アプリを作りたいと思います。

なんで県庁所在地なのかって?
それは私が地理が苦手だからですww
すぐに思い出せないんで、県庁所在地がわかるアプリが欲しいと思ってたんですよー!
(そんな県庁所在地が知りたくなる状況があるのかは謎です)

とりあえず、作っていく上でイメージが大事なので完成したソースコードを書いておきます!

完成ソースコード

import tkinter as tk

root = tk.Tk()
root.title('県庁所在地がわかるくん')
root.minsize(640,480)
root.option_add('*font',['MS Pゴシック', 18])

canvas = tk.Canvas(bg='black', width=640, height=480)
canvas.place(x=0, y=0)
img = tk.PhotoImage(file='city/wakarukun.png')
canvas.create_image(320, 240, image=img)

message = tk.Label(text='知りたい都道府県はどこかな?\n(漢字で入力してね!〔例〕青森県)', bg='white')
message.place(x=125, y=20)

answer = tk.Label(text='・・・', bg='white')
answer.place(x=30, y=300)

entry = tk.Entry(width=13, bd=4)
entry.place(x=330, y=108)

askbutton = tk.Button(text='場所')
askbutton.place(x=530, y=103)

city_date = {'北海道':'札幌市', '青森県':'青森市', '秋田県':'秋田市', '岩手県':'盛岡市', '山形県':'山形市',
    '宮城県':'仙台市', '福島県':'福島市', '茨城県':'水戸市', '栃木県':'宇都宮市', '群馬県':'前橋市',
    '千葉県':'千葉市', '埼玉県':'さいたま市', '東京都':'東京(新宿区)', '神奈川県':'横浜市', '山梨県':'甲府市',
    '新潟県':'新潟市', '長野県':'長野市', '富山県':'富山市', '石川県':'金沢市', '福井県':'福井市',
    '愛知県':'名古屋市', '岐阜県':'岐阜市', '静岡県':'静岡市', '三重県':'津市', '滋賀県':'大津市',
    '京都府':'京都市', '大阪府':'大阪市', '奈良県':'奈良市', '和歌山県':'和歌山市', '兵庫県':'神戸市',
    '鳥取県':'鳥取市', '島根県':'松江市', '岡山県':'岡山市', '広島県':'広島市', '山口県':'山口市',
    '香川県':'高松市', '愛媛県':'松山市', '高知県':'高知市', '徳島県':'徳島市', '福岡県':'福岡市',
    '長崎県':'長崎市', '佐賀県':'佐賀市', '熊本県':'熊本市', '大分県':'大分市', '宮崎県':'宮崎市',
    '鹿児島県':'鹿児島市', '沖縄県':'那覇市'}

def btn_click():
    val = entry.get()
    if val in city_date.keys():
        city = city_date[val]
        answer['text'] = city + 'だね!'
    else:
        answer['text'] = '正しい都道府県を\n漢字で入力してね'

askbutton['command'] = btn_click

root.mainloop()

今回使うものは下記となります。
・tkinterモジュール
・辞書型(dictionary)
・リスト型
・in演算子
・if文

それだはさっそく作ってみましょう!(^^)

ウインドウの作成

ウィンドウを作るのに便利なものが、tkinterモジュールですね!

import tkinter as tk

とりあえずtkinterモジュールをインポートします!
インポートの際、いちいちtkinterと記載するの面倒なので、『as』を使って『tk』に省略しました。

では、インポートしたので、まずはウィンドウを作っていきます。
アプリのタイトルは『県庁所在地がわかるくん』にします!
※名前のセンス本当にないな・・・。

import tkinter as tk

# ウィンドウの作成・設定
root = tk.Tk()
root.title('県庁所在地がわかるくん')
root.minsize(640,480)
root.option_add('*font',['MS Pゴシック', 18])

root.mainloop()

↓実行時

これで、ウィンドウの基本設定は完了ですね!

今回のウィンドウ設定

タイトル → 県庁所在地がわかるくん
ウィンドウサイズ → 横640ピクセル、縦480ピクセル
フォント → MS Pゴシック
フォントサイズ → 18

ウィンドウ上の設定を変えたい場合は、ここの設定をいじれば変更できるってことですね!(^^)

ウインドウに画像の挿入

では、基本となるウィンドウができましたので、次に画像を挿入していきます。
画像がなくても機能はしますが、画像あった方がアプリ感が増しますからね!
ではでは、コードを追加していきます!

import tkinter as tk

# ウィンドウの作成・設定
root = tk.Tk()
root.title('県庁所在地がわかるくん')
root.minsize(640,480)
root.option_add('*font',['MS Pゴシック', 18])

# 画像挿入
canvas = tk.Canvas(bg='black', width=640, height=480)
canvas.place(x=0, y=0)
img = tk.PhotoImage(file='city/wakarukun.png')
canvas.create_image(320, 240, image=img)

root.mainloop()

↓実行時

画像の挿入もこれでOKですね!
簡単にコード内容を説明すると、

(1行目)画像入れる為のキャンバス設定
キャンバス → 色黒ウィンドウ
サイズ → ウィンドウと横640ピクセル、縦480ピクセル
(2行目)ウィンドウ上にキャンバスを配置する位置
キャンバスの左上の位置が
ウィンドウのx座標→0、y座標→0(ウィンドウの左上部分)になるように配置
(3行目)挿入する画像の選択
挿入する画像の保存先を指定
(4行目)キャンバス上に選択した画像を配置する位置
画像の中心の位置が
キャンバスの座標→320ピクセル、y座標→240ピクセル(キャンバスの中心部分)になるように配置
※画像はキャンバスと違い、画像の中心が基点となります

挿入する画像を変更したい場合は、ここで設定できるんですね!(^^)

画像上に文章の挿入

固定した文章であれば、イラストを描く際に文字も一緒に描いて画像化しておいてもいいのですが、
アプリを進めていく途中で文章の内容変えたいとか、文章の位置を変えたいってなった時に、応用が利かなくなりますよね!
なので、基本的には画像とは別で文章を設定していきます

今回も画像上に文字を追加したいので、挿入するためのコードを入れていきたいと思います。

import tkinter as tk

# ウィンドウの作成・設定
root = tk.Tk()
root.title('県庁所在地がわかるくん')
root.minsize(640,480)
root.option_add('*font',['MS Pゴシック', 18])

# 画像挿入
canvas = tk.Canvas(bg='black', width=640, height=480)
canvas.place(x=0, y=0)
img = tk.PhotoImage(file='city/img3/chap3-back.png')
canvas.create_image(320, 240, image=img)

 # 文章挿入
message = tk.Label(text='知りたい都道府県はどこかな?\n(漢字で入力してね!〔例〕青森県)', bg='white')
message.place(x=125, y=20)

answer = tk.Label(text='・・・', bg='white')
answer.place(x=30, y=300)

root.mainloop()

↓実行時

これで画像の上に文章が入りましたね!

こちらも簡単に説明。

文章挿入部分
(1行目)変数messageには、入力してほしい内奥の条件を書いてます。
テキスト背景は吹き出し内の色に合わせて白に設定。
(2行目)変数messageのテキスト配置をキャンバス上で、
x座標 → 125ピクセル、y座標 → 20ピクセルの位置に配置
(3行目)空白
(4行目)変数answerには、都道府県が入力された時に解答が返されるようにするため、一旦「・・・」と入力してます。
こちらもテキスト背景は白に設定。
(5行目)変数answerのテキスト配置をキャンバス上で、
x座標 → 30ピクセル、y座標 → 300ピクセルの位置に配置

ここで注意なのですが、コードを書く際、画像挿入で描いたコードの下に文章挿入のコードを書くようにしましょう。
プログラムはソースコードの上から実行されるので、画像挿入の上に文章挿入のコードを書くと、文章の上に画像が表示されてしまうので実行した際、文章が表示されなくなってしまいます。

※変数messageのコード部分を画像挿入の前に書くとこんな感じで表示されます

確認したい都道府県を受け取れる為の場所と実行ボタンの作成

アプリとして一番大事な『アプリを動かす場所』を作っていきます。
具体的には、『確認したい都道府県を入力する場所』と『入力した内容をもとにプログラムを実行するボタン』が必要ですよね!
いっちょ作っちゃいますか!(^^)

import tkinter as tk

# ウィンドウの作成・設定
root = tk.Tk()
root.title('県庁所在地がわかるくん')
root.minsize(640,480)
root.option_add('*font',['MS Pゴシック', 18])

# 画像挿入
canvas = tk.Canvas(bg='black', width=640, height=480)
canvas.place(x=0, y=0)
img = tk.PhotoImage(file='city/img3/chap3-back.png')
canvas.create_image(320, 240, image=img)

 # 文章挿入
message = tk.Label(text='知りたい都道府県はどこかな?\n(漢字で入力してね!〔例〕青森県)', bg='white')
message.place(x=125, y=20)

answer = tk.Label(text='・・・', bg='white')
answer.place(x=30, y=300)

# 入力場所
entry = tk.Entry(width=13, bd=4)
entry.place(x=330, y=108)

# 実行ボタン
askbutton = tk.Button(text='場所')
askbutton.place(x=530, y=103)

root.mainloop()

↓実行時

ぱっと見た感じだけでいったら完成\(^o^)/

こちらも簡単に説明入れておきます。

入力場所部分は
(1行目)入力場所の設定。
入力場所の長さ → 13(半角13文字分入る長さで入力場所が表示される)、入力場所の枠の大きさ → 4ピクセル分
(2行目)入力場所をキャンバス上で、
x座標 → 330ピクセル、y座標 → 108ピクセルの位置に配置実行ボタン部分は
(1行目)実行ボタンの設定。
ボタン上に表示される文字を『場所』にしてます
(2行目)実行ボタンをキャンバス上で、
x座標 → 530ピクセル、y座標 → 103ピクセルの位置に配置

ではでは、実行プログラムを組んでいきます!

解答内容の設定

今回はちょっと面倒なんですが、辞書型にすべて組み合わせを登録して、そこから解答を持ってくる方法にしたいと思います。
なので、まず都道府県をキーに入れ、それに見合った県庁所在地をバリューに入れて、辞書を作っていきます。

city_date = {'北海道':'札幌市', '青森県':'青森市', '秋田県':'秋田市', '岩手県':'盛岡市', '山形県':'山形市',
    '宮城県':'仙台市', '福島県':'福島市', '茨城県':'水戸市', '栃木県':'宇都宮市', '群馬県':'前橋市',
    '千葉県':'千葉市', '埼玉県':'さいたま市', '東京都':'東京(新宿区)', '神奈川県':'横浜市', '山梨県':'甲府市',
    '新潟県':'新潟市', '長野県':'長野市', '富山県':'富山市', '石川県':'金沢市', '福井県':'福井市',
    '愛知県':'名古屋市', '岐阜県':'岐阜市', '静岡県':'静岡市', '三重県':'津市', '滋賀県':'大津市',
    '京都府':'京都市', '大阪府':'大阪市', '奈良県':'奈良市', '和歌山県':'和歌山市', '兵庫県':'神戸市',
    '鳥取県':'鳥取市', '島根県':'松江市', '岡山県':'岡山市', '広島県':'広島市', '山口県':'山口市',
    '香川県':'高松市', '愛媛県':'松山市', '高知県':'高知市', '徳島県':'徳島市', '福岡県':'福岡市',
    '長崎県':'長崎市', '佐賀県':'佐賀市', '熊本県':'熊本市', '大分県':'大分市', '宮崎県':'宮崎市',
    '鹿児島県':'鹿児島市', '沖縄県':'那覇市'}

はぁー。。疲れた。。
東京都の県庁所在地って新宿にあるんですね!
「東京は東京だよ!」って習ったような記憶があるようなないような気がしたんですが。
まぁ、そんなことは置いといて、これで辞書ができましたね!

実行プログラムの作成

さぁラストスパートですよ
上記で作った辞書をもとに、入力された都道府県から、県庁所在地をもってきて解答として表示させられれば完成ですよね!
では、まず辞書から持ってくる関数を作っていきます。

def btn_click():
    val = entry.get()
    city = city_date[val]
    answer['text'] = city + 'だね!'

btn_click関数を作りました!
内容としては、

(1行目)入力場所に入れられた内容をもってきて、変数valに代入。
(2行目)作っておいた辞書から入力された都道府県に対応した県庁所在地をとってきて、変数cityに代入。
(3行目)変数answerで入力していた「・・・」という文章を書き替える。

あとは、実行ボタンを押したら、この関数のプログラムが実行されるように関連付けてあげればよいのです!

askbutton['command'] = btn_click

辞書、関数、実行それぞれのコードを、実行ボタンのコードの下に入力してあげたら完成!\(^o^)/

実行してみよう!

いいねー!(^^)

・・・ん?まちがえた文字いれたらターミナル上でエラー出たぞ。。
そうか。。
関数部分で、入力内容受け取った際に正しい都道府県名が入力されたこと前提にプログラム書いちゃってるからだね。

直そう!!

def btn_click():
    val = entry.get()
    if val in city_date.keys():
        city = city_date[val]
        answer['text'] = city + 'だね!'
    else:
        answer['text'] = '正しい都道府県を\n漢字で入力してね'

黄色字部分を書き足しました!
内容としては、

if文を使って、
・入力された文字が、登録した辞書のキー内に入ってる文字なら、もともと書いたプログラムが実行される
・それ以外の文字が入力されたら、正しく入力してねと表示される

今度こそ完成!!\(^o^)/\(^o^)/\(^o^)/
これで、急に県庁所在地を聞かれても、すぐにわかるね!
(だからそんな状況になることほぼほぼないだろ!!)

ウィンドウ使用の検索アプリのまとめ

簡単な検索アプリを作りましたが、思ったより簡単じゃなかったでしょうか?
今回作ったウィンドウ作成から実行ボタン作成までの形を使えば、イラストや配置場所を変えて、実行プログラムをちょっと変えてしまえば、いろいろなアプリに応用できそうですね!
簡単なものでも良いので、今回作った検索アプリをもとに、自分で考えたオリジナルのアプリを作ってみると、どんどん成長していくのかなって思います。
皆さんも是非オリジナルアプリづくりに挑戦してみてください!(^^)



プログラミング初心者向け動画!【エコーズラインプログラミング】

Leave A Reply

*
*
* (公開されません)

相談などはこちら

相談などはこちら

オリジナルで曲やPVを作ってみたいという方、お気軽にご相談下さい♪ グッズはなんと1つから受注生産可能です!(たとえば、試しに自分の写真を素材としたスマホケースを1つだけ作るなど)

Recommended

More