【Python】 tkinter 1問1答アプリ

■tkinter 1問1答

Tkinter の画面にて「問題」ボタンを押下して問題をセットし
「回答」ボタン押下にて答えをメッセージボックスで出力する。

今回は英単語の1問1答アプリを作成する。

問題および答えはCSVファイルに管理し、
pandasのライブラリを使って呼び出す。

▼CSVファイル名
EnglishWords.csv

▼CSVファイルの内容

「英語」,「日本語」
about five hundred yen,およそ500円
get to the airport,空港に着く
be angry with sb,(人)に怒っている
play baseball,野球をする
bring money,お金を持ってくる
・
・
・
a close friend,親友
make friends with sb,(人)と友達になる
give sth to sb / give sb sth,(人)に(物)を与える、あげる

・サンプルコード

# -*- Coding: UTF-8 -*-

import pandas as pd
import tkinter as tk
import tkinter.messagebox as msg
import random

# 問題選択処理
def SelectEnglishWords():
    # CSVファイル読み込み
    df = pd.read_csv("EnglishWords.csv")

    # CSVファイルの長さを取得
    df_length = len(df)

    # csvファイルの長さ内で任意の数字を取得(CSVの先頭はタイトル扱いのため-1する)
    select_nums = random.randint(0, df_length - 1)

    # 変数にCSVファイル内の設定された英語と日本語を格納
    select_word = [df.iloc[select_nums][0], df.iloc[select_nums][1]]

    # 0か1の乱数を格納
    nums = random.randint(0, 1)

    # 問題ラベルを格納
    label_question["text"] = select_word[nums]

    # 変数:numsの逆の値を答えにセット
    if nums == 0 :
        ans_text.set(select_word[1])
    elif nums == 1:
        ans_text.set(select_word[0])


# 答え表示処理
def MsgBoxAns():
    msg.showinfo("答え", ans_text.get())


##############
# 画面の設定
##############
base = tk.Tk()
# 画面のタイトルを設定
base.title("英単語1問1答")
# 画面のサイズを設定する
#    width   :幅(px)
#    height  :高さ(px)
canvas = tk.Canvas(base, width=500, height=250)
canvas.pack()

# 回答用の変数と初期値をセット
ans_text = tk.StringVar()
ans_text.set("問題ボタンを押して回答をセットしてください")

# 問題表示用のラベル
label_question = tk.Label(anchor='center')
label_question.place(x=225, y=50)

# 問題作成ボタンの作成と配置場所
btn_select = tk.Button(base, text="問題", command=SelectEnglishWords)
btn_select.place(x=150, y=155)

# 答えボタンの作成と配置場所
btn_ans = tk.Button(base, text="答え", command=MsgBoxAns)
btn_ans.place(x=300, y=155)

# 画面の表示
base.mainloop()

・実行結果

▼起動直後の画面

▼「問題」ボタン押下時

▼「答え」ボタン押下時

タイトルとURLをコピーしました