Python(3.7.0)とtkinterで単語帳を作っています。検索した言葉が単語帳に存在すればその意味を、存在しない場合はエラーを表示させたいと思っています。しかし、そのような意図でif構文を書いてみているのですが、エラー表示のコードを追加すると、辞書内に存在する言葉で検索してもエラー表示されるようになってしまい、どうしてそうなってしまうのかがわかりません。
以下が現在書いているコードです。どこをどのように書き換えば、エラー表示を正しい場合(検索した単語が単語帳内に存在しない場合)に表示できるようになるのでしょうか。ご回答お待ちしております。よろしくお願いします。
python
1# coding:utf-8 2import tkinter as tk 3import tkinter.messagebox as tmsg 4 5#ここでは空にしていますが、単語とその意味を紐付けしたディクショナリを作ってあります。 6word_list = {} 7 8def buttonClick(): 9 b = edit_box1.get() 10 11 key_list =[] 12 13 if b == "一覧": 14 for i in word_list: 15 key_list.append(i) 16 tmsg.showinfo("一覧", key_list) 17 else: 18 for j in word_list: 19 if b == j: 20 tmsg.showinfo("単語", word_list[j]) 21 else: 22 tmsg.showinfo("エラー", "Not Found") 23 break 24#このすぐ上のelse内にあるelseの、「tmsg.showinfo("エラー", "Not Found")」が思うように条件付けできません。 25 26root = tk.Tk() 27root.geometry("600x200") 28root.title("単語帳") 29 30edit_box1 = tk.Entry(width = 20, font=("Helvetica", 22)) 31edit_box1.place(x = 140, y = 70) 32 33button1 = tk.Button(root, text="検索", font=("Helvetica", 14), command=buttonClick) 34button1.place(x = 420, y = 80) 35 36root.mainloop()
該当のソースコード
python
1 if b == "一覧": 2 for i in word_list: 3 key_list.append(i) 4 tmsg.showinfo("一覧", key_list) 5 else: 6 for j in word_list: 7 if b == j: 8 tmsg.showinfo("単語", word_list[j]) 9 else: 10 tmsg.showinfo("エラー", "Not Found") 11 break
試したこと
else内にあるif構文のelse(エラー表示の指定部分)を「elif b != j:」にしてみたり、このelse部分を外のif構文のelseになるように書き換えてみたり、初めのelseを「elif b != "一覧"」にしてみたり、あるいはshowinfoではなくshowerrorにしても、いずれもエラー表示が優先されてしまいます。エラー表示を指定するコードを取っ払うと、検索した単語の意味がきちんと表示されるようになります。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/02 07:51
2018/08/02 08:45 編集
2018/08/02 10:16
2018/08/02 10:29 編集