朝一番で頭の体操と称して英単語のクイズをやっております(ここです)。
ここで間違えたものや、大事そうな英単語を纏めた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にして、そのデータを読込それぞれ三つの要素を組にして変数に格納する方法でやってみます。
続く