前提・実現したいこと
Pythonプログラム初心者の学生です
365日の月日をインプットし、リスト化した情報を表示させたいのですが正しい表示が出ません
インターネットの情報をもとに応用して勉強していますが、まだまだ理解が足りていないため
ご教授ください
もっと基本的なことを勉強しなければいけないことは自分自身理解しております
正しく表示させるにはどのようにすればよろしいのでしょうか?
発生している問題・エラーメッセージ
入力項目で花言葉を正しく表示させたいのですが、全く違うリストが表示されます
例)1月2日を入力すると
正:梅 不屈の精神・高潔です
誤表示:カーネーション 無垢で深い愛です
最初の月を入力した時点で表示内容が確定していると思っています
エラーメッセージ
エラーではないのですが、そもそもの考え方が間違っていると思います
該当のソースコード
Python
1import tkinter as tk 2root = tk.Tk() 3root.title('誕生日診断') 4canvas = tk.Canvas(root, height=600, width=900,bg="#FFFFFF") 5canvas.pack() 6root = tk.Tk() 7root.title('花言葉診断') 8lbl = tk.Label(text='あなたの花言葉を調べましょう!誕生日を入力して下さい', bg="#FFFFFF") 9lbl.place(x=590, y=10) 10lbl = tk.Label(text='月', bg="#FFFFFF") 11lbl.place(x=590, y=30) 12lbl = tk.Label(text='日', bg="#FFFFFF") 13lbl.place(x=590, y=100) 14lbl2 = tk.Label(text='貴方の花言葉は' , bg="#FFFFFF") 15lbl2.place(x=590, y=220) 16Entry5= tk.Entry(width=20, bg="#EEEEEE") 17Entry5.place(x=590, y=70) 18Entry6= tk.Entry(width=20, bg="#EEEEEE") 19Entry6.place(x=590, y=130) 20abc = [ 21 ["カーネーション"" ""無垢で深い愛", 1, 1], 22 ["梅"" ""不屈の精神・高潔", 1, 2], 23 ["チューリップ"" ""思いやり", 1, 3], 24 ["アルストロメリア"" ""花言葉は持続・エキゾチック", 1, 4], 25 ["スズラン"" ""再び幸せが訪れる・純粋", 1, 5], 26 ["薔薇"" ""愛・美", 1, 6], 27 ["ハス"" ""清らかな心・神聖", 1, 7], 28 ["ひまわり"" ""憧れ・あなただけを見つめる",1, 8], 29 ["ダリア"" ""栄華・気まぐれ", 1, 9], 30 ["ガーベラ"" ""希望・前進", 1, 10], 31 ["ポインセチア"" ""聖夜・幸運を祈る", 1, 11], 32 ["カーネーション"" ""無垢で深い愛", 1, 12], 33 ["梅"" ""不屈の精神・高潔", 1, 13], 34 ["チューリップ"" ""思いやり", 1, 14], 35 ["アルストロメリア"" ""花言葉は持続・エキゾチック", 1, 15], 36 ["スズラン"" ""再び幸せが訪れる・純粋", 1, 16], 37 ["薔薇"" ""愛・美",1, 17], 38 ["ハス"" ""清らかな心・神聖", 1, 18], 39 ["ひまわり"" ""憧れ・あなただけを見つめる", 1, 19], 40 ["ダリア"" ""栄華・気まぐれ", 1, 20], 41 ["ガーベラ"" ""希望・前進", 1, 21], 42 ["シクラメン"" ""遠慮・気おくれ", 1, 22], 43 ["ポインセチア"" ""聖夜・幸運を祈る", 1, 23], 44 ["カーネーション"" ""無垢で深い愛", 1, 24], 45 ["梅"" ""不屈の精神・高潔", 1, 25], 46 ["チューリップ"" ""思いやり", 1, 26], 47 ["アルストロメリア"" ""花言葉は持続・エキゾチック", 1, 27], 48 ["スズラン"" ""再び幸せが訪れる・純粋", 1, 28], 49 ["薔薇"" ""愛・美", 1, 29], 50 ["ハス"" ""清らかな心・神聖", 1, 30], 51 ["ひまわり"" ""憧れ・あなただけを見つめる", 1, 31], 52 ["ダリア"" ""栄華・気まぐれ", 2, 1], 53 ] 54var = tk.StringVar() 55def command1(): 56 57 for i in range(len(abc)): 58 if abc[i][1] == int(Entry5.get()): 59 if abc[i][2] <= int(Entry6.get()): 60 #var.set(f"{abc[i][0]}です") 61 result = f"{abc[i][0]}です" 62 break 63 else: 64 #var.set(f"{abc[i-1][0]}です") 65 result = f"{abc[i-1][0]}です" 66 break 67 #lbl4 = tk.Label(textvariable=var) 68 lbl5 = tk.Label(text=result) 69 lbl5.place(x=650, y=250) 70 return 0 71cmdbtn = tk.Button(canvas, 72 text="確認",padx=10, pady=5, 73 command=command1).place(x=690, y=170) 74clsbtn = tk.Button(canvas, 75 text="終了", padx=10, pady=5, 76 fg="red", 77 command=quit).place(x=750, y=170) 78root.mainloop() 79
試したこと
自分なりに試しましたが、全く意味のないことでした
補足情報(FW/ツールのバージョンなど)
Python 3.9.0 (tags/v3.9.0:9cf6752, Oct 5 2020, 15:34:40) [MSC v.1927 64 bit (AMD64)] on win32
インデントがなくコードが読めません(実行できません)。以下を参考に修正ください。
https://teratail.storage.googleapis.com/uploads/contributed_images/56957fe805d9d7befa7dba6a98676d2b.gif
お手数をおかけします 修正して下記に転記しました こちらでよろしいでしょうか? すみません
import tkinter as tk
root = tk.Tk()
root.title('誕生日診断')
canvas = tk.Canvas(root, height=600, width=900,bg="#FFFFFF")
canvas.pack()
root = tk.Tk()
root.title('花言葉診断')
lbl = tk.Label(text='あなたの花言葉を調べましょう!誕生日を入力して下さい', bg="#FFFFFF")
lbl.place(x=590, y=10)
lbl = tk.Label(text='月', bg="#FFFFFF")
lbl.place(x=590, y=30)
lbl = tk.Label(text='日', bg="#FFFFFF")
lbl.place(x=590, y=100)
lbl2 = tk.Label(text='貴方の花言葉は' , bg="#FFFFFF")
lbl2.place(x=590, y=220)
Entry5= tk.Entry(width=20, bg="#EEEEEE")
Entry5.place(x=590, y=70)
Entry6= tk.Entry(width=20, bg="#EEEEEE")
Entry6.place(x=590, y=130)
abc = [
["カーネーション"" ""無垢で深い愛", 1, 1],
["梅"" ""不屈の精神・高潔", 1, 2],
["チューリップ"" ""思いやり", 1, 3],
["アルストロメリア"" ""花言葉は持続・エキゾチック", 1, 4],
["スズラン"" ""再び幸せが訪れる・純粋", 1, 5],
["薔薇"" ""愛・美", 1, 6],
["ハス"" ""清らかな心・神聖", 1, 7],
["ひまわり"" ""憧れ・あなただけを見つめる",1, 8],
["ダリア"" ""栄華・気まぐれ", 1, 9],
["ガーベラ"" ""希望・前進", 1, 10],
["ポインセチア"" ""聖夜・幸運を祈る", 1, 11],
["カーネーション"" ""無垢で深い愛", 1, 12],
["梅"" ""不屈の精神・高潔", 1, 13],
["チューリップ"" ""思いやり", 1, 14],
["アルストロメリア"" ""花言葉は持続・エキゾチック", 1, 15],
["スズラン"" ""再び幸せが訪れる・純粋", 1, 16],
["薔薇"" ""愛・美",1, 17],
["ハス"" ""清らかな心・神聖", 1, 18],
["ひまわり"" ""憧れ・あなただけを見つめる", 1, 19],
["ダリア"" ""栄華・気まぐれ", 1, 20],
["ガーベラ"" ""希望・前進", 1, 21],
["シクラメン"" ""遠慮・気おくれ", 1, 22],
["ポインセチア"" ""聖夜・幸運を祈る", 1, 23],
["カーネーション"" ""無垢で深い愛", 1, 24],
["梅"" ""不屈の精神・高潔", 1, 25],
["チューリップ"" ""思いやり", 1, 26],
["アルストロメリア"" ""花言葉は持続・エキゾチック", 1, 27],
["スズラン"" ""再び幸せが訪れる・純粋", 1, 28],
["薔薇"" ""愛・美", 1, 29],
["ハス"" ""清らかな心・神聖", 1, 30],
["ひまわり"" ""憧れ・あなただけを見つめる", 1, 31],
["ダリア"" ""栄華・気まぐれ", 2, 1],
]
var = tk.StringVar()
def command1():
for i in range(len(abc)):
if abc[i][1] == int(Entry5.get()):
if abc[i][2] <= int(Entry6.get()):
#var.set(f"{abc[i][0]}です")
result = f"{abc[i][0]}です"
break
else:
#var.set(f"{abc[i-1][0]}です")
result = f"{abc[i-1][0]}です"
break
#lbl4 = tk.Label(textvariable=var)
lbl5 = tk.Label(text=result)
lbl5.place(x=650, y=250)
return 0
cmdbtn = tk.Button(canvas,
text="確認",padx=10, pady=5,
command=command1).place(x=690, y=170)
clsbtn = tk.Button(canvas,
text="終了", padx=10, pady=5,
fg="red",
command=quit).place(x=750, y=170)
root.mainloop()
コードは「コードの挿入」で記入してください。
回答2件
あなたの回答
tips
プレビュー