前提・実現したいこと
前回の回答でその時の問題は解決できました。 有難うございました。
其れを基に少し進展したのですが、下記問題が解決できません。
二つのtextboxの数値を合計して、別のtextboxに表示させたいのですが、
それぞれ別の関数でtextboxの数値を選択していますので、変数のスコープが
違うためなのでしょうが、図に示したように片方の数値しか表示できません。
どこへどう書けば合計表示できるでしょうか。
宜しくお願い致します。
発生している問題・エラーメッセージ
エラー表示は出ませんが、合計ではなく最後に選んだ数値の方だけが表示されてしまします。
該当のソースコード
Python
1 2#EV計算機2.py 7/18/2019 3 4from tkinter import * 5import tkinter 6 7if __name__ == "__main__": 8 root = tkinter.Tk() 9 root.title("kumasanのEV計算機") 10 root.geometry("270x400") 11 12 label_f=tkinter.Label(root,text="Aperture", bg="lightblue") 13 label_f.place(x=20,y=20) 14 label_tso=tkinter.Label(root,text="Shutter Speed", bg="lightblue") 15 label_tso.place(x=150,y=20) 16 17 label_EV=tkinter.Label(root,text="Total EV", bg="red") 18 label_EV.place(x=20, y=280) 19 20 #### EV表示用 #### 21 22 textbox_f=tkinter.Entry(width=5) 23 textbox_f.insert(tkinter.END,"F EV") 24 textbox_f.place(x=20 ,y=250) 25 26 textbox_t=tkinter.Entry(width=5) 27 textbox_t.insert(tkinter.END,"T EV") 28 textbox_t.place(x=120 ,y=250) 29 30 textbox_EV=tkinter.Entry(width=10) 31 textbox_EV.insert(tkinter.END,"Total EV") 32 textbox_EV.place(x=80 ,y=280) 33 34 label_F = tkinter.Label(root, text="show_F", bg="lightblue") 35 label_F.place(x=20, y=220) 36 37 def show_item_F(event): 38 #リストクリック時に実行するメソッド 39 item_index2 = listbox_F.curselection() 40 41 if len(item_index2) >= 1: 42 label_F["text"] = listbox_F.get(item_index2) 43 44 ################### Fが変わったらFvも自動で変わる############## 45 textbox_f.delete(0, tkinter.END) 46 Fv=label_F["text"] 47 48 F_EV = {"1.4":1, "2":2, "2.8":3, "4":4, "5.6":5, "8":6, "11":7, "16":8, "22":9, "32":10} 49 textbox_f.insert(tkinter.END, F_EV[Fv] ) 50 #print(type(F_EV[Fv])) # <--- int() 51 52 textbox_EV.delete(0,tkinter.END) 53 textbox_EV.insert(tkinter.END,F_EV[Fv]) 54 55 56 listbox_F = tkinter.Listbox(root,width=8, selectmode="single") 57 listbox_F.bind("<<ListboxSelect>>", show_item_F) 58 li = ["1.4", "2", "2.8", "4", "5.6", "8", "11", "16", "22", "32"] 59 for item in li: 60 listbox_F.insert(tkinter.END, item) 61 listbox_F.place(x=20, y=40) 62 63 ################### 64 label_T = tkinter.Label(root,text="show_T", bg="lightblue") 65 label_T.place(x=120, y=220) 66 67 def show_item_T(event): 68 #リストクリック時に実行するメソッド 69 item_index3 = listbox_T.curselection() 70 71 if len(item_index3) >= 1: 72 label_T["text"] = listbox_T.get(item_index3) 73 74 ################### Tが変わったらTvも自動で変わる############## 75 textbox_t.delete(0, tkinter.END) 76 Tv=label_T["text"] 77 78 T_EV = {"30":-5, "15":-4, "8":-3, "4":-2, "2":-1, "1":0, "1/2":1, "1/4":2, "1/8":3, "1/15":4,"1/30":5, "1/60":6, "1/125":7, "1/250":8, "1/500":9, "1/1000":10, "1/2000":11, "1/4000":12, "1/8000":13} 79 textbox_t.insert(tkinter.END, T_EV[Tv] ) 80 #print(T_EV[Tv]) 81 82 #textbox_EV.delete(0,tkinter.END) 83 textbox_EV.delete(0,tkinter.END) 84 textbox_EV.insert(tkinter.END,T_EV[Tv]) 85 86 87 listbox_T = tkinter.Listbox(root,width=8, height=19,selectmode="single") 88 listbox_T.bind("<<ListboxSelect>>", show_item_T) 89 li = ["30", "15", "8", "4", "2", "1", "1/2", "1/4", "1/8", "1/15", "1/30", "1/60", "1/125", "1/250","1/500", "1/1000", "1/2000", "1/4000","1/8000"] 90 for item in li: 91 listbox_T.insert(tkinter.END, item) 92 listbox_T.place(x=180, y=40) 93 94 ################### F,TのEVが決定したら総合EVの計算表示を行う######################## 95 #Total EV=Fv+Tv の計算をやりたい(例:7+8=15) 96 97 98root.mainloop() 99 100
試したこと
上記のcodeではあとから選んだ方の数値だけが表示されます。 また別に合計用関数が必要なのでしょうか?
補足情報(FW/ツールのバージョンなど)
W10 64bit
Python3.7.3
ここにより詳細な情報を記載してください。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/07/19 00:52