Pythonで簡単なデスクトップアプリを作ってみよう!シリーズ。(シリーズにできたらいいなぁ。)
はじめに、紹介するのは、ボタンを押すと、その日の運勢を教えてくれるもの、そう、おみくじアプリです!
とてもシンプルな作りですが、ここから、発展させて、クイズにすることもできます。
使うのは、Tkinterライブラリーです。TkinterはPythonの標準ライブラリーなので、特に外部からインストールする必要はなく、Pythonの環境を整えるだけで使えます。
コードの全体像
はじめにコードの全体像です。15行以下のとっても短いプログラムです。
内容は次から説明していきますね!
import random
import tkinter as tk
lst_fortune = ["凶","末吉","小吉","中吉","吉","大吉!"] #運勢リスト
#--運勢Noをランダムに選択し、ラベルに運勢を表示
def changeText():
i = random.choice(lst_fortune) #ランダムな値を取得
lb_value['text'] = i
root = tk.Tk()
root.title("おみくじ")
root.geometry("350x100") #幅350,縦:100
bt_disp=tk.Button(text="今日のあなたの運勢は?", command=changeText) #ボタン作成
lb_value=tk.Label(text="") #ラベル作成
bt_disp.pack() #ボタン配置
lb_value.pack() #ラベル配置
root.mainloop()
ウインドウをたちあげる
まず実行した時のウインドウ表示をしてみます。
import tkinter as tk
root = tk.Tk()
root.title("おみくじ")
root.geometry("350x100")
root.mainloop()
1行目 tkinterライブラリーをimportして読み込みます。tkinterが長いので、tkとしてimportしています。置き換えない場合は、import tkinter だけで大丈夫です。
2行目 Tk( )で、ベースとなるルート(root)を作成します。ここにテキストやボタンなどを配置して、GUIアプリを作成します。as tk としてインポートしない場合は、root = tkinter.Tk( )となります。以降も同様です。
3行目 ウインドウのタイトル名です。ここでは、「おみくじ」 としました。
4行目でウインドウのサイズを設定しています。サイズの設定は幅350、縦100にしました。

実行するとウインドウが表示されました。
表示させる運勢のリストをつくる
運勢のリストをつくります。Pythonでは、複数のデータを扱うときにリストにまとめることができます。リストの作り方は、名前をつけて、[ ] の中に値をカンマで区切っていれます。ここでは、lst_fortuneというリストに今回のおみくじに出てくる運勢を入れました。
lst_fortune = ["凶","末吉","小吉","中吉","吉","大吉!"]
ボタンとラベルを表示する
次に、ウインドウに表示するボタンとラベルの作成をします。ボタンに、”今日のあなたの運勢は?”というテキストを表示します。ラベルは、運勢を表示するので初めの状態は空白にしておきます。
bt_disp=tk.Button(root,text="今日のあなたの運勢は?",command=changeText)
lb_value=tk.Label(text="")
bt_disp.pack() #ボタン配置
lb_value.pack() #ラベル配置
ボタンは、ボタン名 = tk.Button(master, オプション)、ラベルは、ラベル名 = tk.Label(master, オプション)で作成します。(メインウインドウに表示する場合は、第一引数のmaster(この場合はroot)は省略することができます。
ボタンにアクションを組み込みたいので、ボタン作成時のcommandにアクションを呼び出す関数名を指定しておきます。
名前をつけて、作成するだけでは、表示されないので、pack()でボタンとラベルを配置します。packは生成したウィジェットを配置する方法の一つです。
記述した順に、メインウインドウに上から順に配置していきます。(デフォルトは、上から下方向ですが、引数を入れると、どの方向に配置するか決めることができます。)

実行するとウインドウにボタンが表示されました。この段階では、ボタンを押しても何も表示されません。
注意)commandに指定した関数が定義されていないとエラーになりますので、実行するときは、commandのところを削除して実行してください。
実行ボタンの関数をつくる
ボタンを押したら<運勢を表示する>というアクションを実行したいので、ボタンのcommandで指定した関数changeTextを作ります。ボタンを押すとcommandで設定した関数changeTextが呼び出されます。
import random
関数内で、ランダムにリスト内の要素を一つ選ぶので、プログラム1行目にimport randomを記述しておきます。
先ほど、コマンドで指定したchangeText関数を作ります。
def changeText():
i = random.choice(lst_fortune)
lb_value['text'] = i
random.choiceでリストの中からランダムに値を一つ取り出します。
ラベルのテキストを取り出した値に置き換えます。
完成です^^/
実行してみましょう。
