脳トレの勧め 1/2

朝一番で頭の体操と称して英単語のクイズをやっております(ここです)。

ここで間違えたものや、大事そうな英単語を纏めたQ&Aアプリを作りました。

結構初心者の自分にとっては難しいプログラムでしたので、次回似たようなものを作る時の為に纏めてみました。

まず少し易しくデータはcode中に書き込んだ例を述べます。

ここで苦労したのは、要素が三つあるので辞書型では簡単にいかないので、タプル型にして要素を一度に三個指定することにしました。 こうやり方が良いのかどうか良く分かりませんが、今の所問題なく動いております。

 

英単語が出題されたて答えを見るときには、「meaning」ボタンを押すとそれが表示されます。

 

 
# 英単語Q&A2.py 
 
import tkinter as tk
import random
import time

root = tk.Tk()
root.title(‘英単語Q&A’)
root.geometry(“400×200”)

txt1 = tk.Entry(root, width=33, font=(“Helevetica”, 12, “bold”), fg=”red”)
txt1.place(x=50, y=20)

txt2 = tk.Entry(root, width=50)
txt2.place(x=50, y=50)

txt3 = tk.Entry(root, width=50)
txt3.place(x=50, y=80)

# この例では、要素が3*13=39個ある
list_tuple = (
    “auspicious”, “吉兆の”, “auspicious beginning 幸先の良いスタート”,
    “nauseous”, “むかつかせる”, “become/feel nauseous 吐き気を催す”,
    “beseech”, “懇願[嘆願]する”, “beseech him to show mercy 彼に慈悲を嘆願する”,
    “canny”, “用心深い”, “canny about ~を見抜く”,
    “carping”, “あら捜し”, “carping tongue 毒舌”,
    “commodious”, “家・室が広い”, “commodious apartment”,
    “condign”, ” (処罰を)当然受けるべき”, “condignity 功徳”,
    “demarcation”, “境界(設定)”, “demarcation line between ~間の垣根”,
    “denize”, “居住者、居留民、帰化動物”, “denizens of the deep 海の住人、魚”,
    “derogatory”, “傷つける”, “derogatory implications  軽蔑的な意味合い”,
    “diaphanous”, “透明な、半透明の”, “diaphanous curtain 透けて見えるカーテン”,
    “dingy”, “黒ずんだ”, “dingy building”,
    “fete”, “(…のために)祝う”, “fete day 祭日”,)

def show_data(event):
    txt1.delete(0, tk.END)
    txt2.delete(0, tk.END)
    txt3.delete(0, tk.END)

    length = len(list_tuple)
    length = length/3

    # 0からlength迄の間の要素から3っつおきの整数をnに入れる。 0, 3, 6, 9, 12のどれかがnに入る
    n = random.randrange(0, length)  # randrange(start, stop, step)

    list_tuple[n]  # リスト_タプルのn番目を選ぶ
    txt1.delete(0, tk.END)
    txt1.insert(tk.END, ” ” + list_tuple[n * 3])

    def meaning(event):
        list_tuple[n * 3 + 1]
        txt2.delete(0, tk.END)
        txt2.insert(tk.END, ” ” + list_tuple[n * 3 + 1])

        list_tuple[n*3+2]
        txt3.delete(0, tk.END)
        txt3.insert(tk.END, ” ” + list_tuple[n*3+2])

    btn2.bind(“<Button>”, meaning)

def quit():
    root.destroy()

btn1 = tk.Button(root, text=”Next”)
btn1.bind(“<Button>”, show_data)
btn1.place(x=100, y=130)

btn2 = tk.Button(root, text=”meaning”)
btn2.place(x=180, y=130)

btn3 = tk.Button(root, text=”End”, command=quit)
btn3.place(x=280, y=130)

root.mainloop()

 

結果は下図のようになります。

上の図:開始時やnextボタンをクリックした時
下の図:meaningボタンをクリックした時

 

次回はデータは別fileにして、そのデータを読込それぞれ三つの要素を組にして変数に格納する方法でやってみます。

 

 

続く

 

 

 

 

Python別館
Python別館 目次

・Pythonで作成したアプリ関連の記事は「Python別館」に、・widgetやその使用方法・それ …

Python別館
脳トレの勧め 2/2

前回は、辞書に三つの要素を入れる術が分からなかったので、策を弄して取敢えずは動くように出来ました。で …

Python別館
辞書から回文英単語を探そう

「竹藪焼けた」、「磨かぬカガミ」とか後ろから読んでも同じになるものを「回文」と云います。日本語のそれ …