ロボ団泉大津校のホームページにようこそ!

Pythonで簡単なGUIアプリを作ろう〜15行以内でできる!おみくじ編①〜

Python

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でリストの中からランダムに値を一つ取り出します。
ラベルのテキストを取り出した値に置き換えます。

完成です^^/
実行してみましょう。