前提・実現したいこと
Pythonで子供向けのアプリを作っております。
立ち上げ画面まではいいのですが、次への処理が分かりません。
宜しくお願い致します。
発生している問題・エラーメッセージ
Nextボタンの処理方法が分かりません。 listboxの正しい要素をselectすると表示するようになっているのですが、 その辺がNextクリックでうまく行きません
該当のソースコード
Python3.7.3
1import os 2import tkinter as tk 3import random 4from PIL import Image, ImageTk 5 6root = tk.Tk() 7root.title("笑和のディズニーランド") 8root.geometry("580x500") 9 10label_asking_name = tk.Label(root, text="これは誰でしょう?", bg="lightblue") 11label_asking_name.place(x=20, y=20) 12 13label2_jpg_img = tk.Label(root) 14label2_jpg_img.place(x=20, y=50) 15 16label3_showing_name = tk.Label(root, text="正解なら") 17label3_showing_name.place(x=380, y=380) 18label4 = tk.Label(root, text="キャラクターの名前がここに出ます") 19label4.place(x=400, y=400) 20 21textbox_story = tk.Text(root, font=("Menlo", 12, "bold"), 22 bg='lightyellow', width=35, height=6) 23textbox_story.place(x=20, y=350) 24 25stars = { 26 'おーろらひめ': '悪い魔女に呪いをかけられ生きたまま眠り続けることになりますが、王子によって助け出され、幸せになります。', 27 'ありえる': '陸に憧れていた人魚姫が、海の魔女に人間にしてもらいます。魔女は人魚たちの王国を乗っ取るつもりでしたが、エリック王子によって倒され、最後に姫と王子は結ばれます。', 28 'あな': '生まれつき氷の魔力を持った姉・エルサは、能力を暴発させた罪の意識から行方をくらませてしまう。妹・アナの頑張りによりエルサの心は救われ、自分らしく生きることの喜びを知る。', 29 'えるさ': '生まれつき氷の魔力を持った姉・エルサは、能力を暴発させた罪の意識から行方をくらませてしまう。妹・アナの頑張りによりエルサの心は救われ、自分らしく生きることの喜びを知る。', 30} 31 32lable_name = tk.Label(root, font=("Menlo", 12, "bold"), 33 width=15, fg="red", bg="lightblue") 34lable_name.place(x=380, y=420) 35 36def show_item(event): 37 item_index = listbox_JIS.curselection() # sellected listbox item 38 39 if len(item_index) >= 1: 40 selected_name = dizney[0][:-4] 41 lable_name["text"] = listbox_JIS.get(item_index) 42 43 if dizney[0][:-4] == listbox_JIS.get(item_index): 44 lable_name["text"] = dizney[0][:-4] 45 46 message = stars[dizney[0][:-4]] 47 textbox_story.insert(tk.END, message) 48 else: 49 lable_name["text"] = "" 50 textbox_story.delete("1.0", "end") 51 52def push_next(): 53 lable_name['text'] = '' 54 label2_jpg_img.configure(image='') 55 textbox_story.delete('1.0', 'end') 56 57path = "./holder_jpg" 58dizneys = os.listdir(path) 59dizney = random.sample(dizneys, 1) 60# print(dizney[0]) 61img = Image.open('./holder_jpg/' + dizney[0]) 62img = ImageTk.PhotoImage(img) 63label2_jpg_img = tk.Label(root, image=img) 64label2_jpg_img.place(x=20, y=50) 65 66listbox_JIS = tk.Listbox(root, font=( 67 "Times New Roman", 12, "bold"), width=15, height=14, selectmode="single") 68listbox_JIS.bind("<<ListboxSelect>>", show_item) 69 70key_list = ["あな", "ありえる", "えるさ", "おーろらひめ"] 71random.shuffle(key_list) 72 73for item in key_list: 74 listbox_JIS.insert(tk.END, item) 75 listbox_JIS.place(x=380, y=20) 76 77button1 = tk.Button(root, text='Next', width=5, command=push_next) 78button1.place(x=400, y=330) 79 80def destroy(): 81 root.destroy() 82 83button2 = tk.Button(root, text='End', width=5, command=destroy) 84button2.place(x=450, y=330) 85 86root.mainloop()
試したこと
Nextボタンをクリックしたら、画像・ラベル文字削除までは出来たのですが、画像・リストボックス要素の取り込みが出来ません。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
開発環境はW10 x64、Visual Sutudio Codeを使用しております。
出来上がり図と必要画像を添付致します。画像はpyファイルとは別のholder_jpgに入れてあります。
画像の使用許可は得ていますか?
得ていないのであれば、前の質問を含め安全な画像に差し替えるか削除してください。
また、前の質問と同じ内容なら、新たに質問を立てるのは止めて(この質問は削除して)、前の質問を編集して質問を継続してください。
Next ボタンを押したあとはどのような挙動を想定されていますか?
この質問に目をとめて頂き有難うございます。
まず、プログラムを起動すると;
・画像と複数の名前を取りこんだリストボックスが表示されます。
・そのリストボックスの中から正しい名前をクリックすると、その名前と説明が表示されます。
次に「Nextボタン」をクリックすると、次のような挙動を期待しております。
・画像、名前を一旦消す。リストボックスの要素も消してもいいです。
・次にboot時と同様に、画像・リストボックス要素の順序を変えて表示します。
・これで初期のboot状態と同じようにしたいのです。
def push_next():では画像・名前の消去までしか出来ておりません。 その中にboot時に行うpathやlistboxを取り込めるように同じcodeを書いてみたのですが、listbox_JIS.bind("<<ListboxSelect>>", show_item)とバッティングして上手く動作しませんでした。
この説明でお分かりいただけたかどうか、分かりませんが宜しく度指導お願い致します。
p.s. 添付のimgに同じものが有りますが、気にしないで下さい。
回答1件
あなたの回答
tips
プレビュー