数年前にフォトマスター検定の受験用に、VisualBasicでEV計算機を作成したことが有りました。
今回はそれをPythonで作ってみようと思います。
まだ何も考えていませんが、考え方は同じなのでPythonでも出来るでしょう。
① 以前VBで作ったEV計算機はこれ。
ISO、絞り、シャッター速度を指定すると
どんな明るさの光景に適しているか?
などと表示してくれます。 これで暫く設定していると
いつの間にか「今日は天気だから、F=5.6、T=1/500、ISO=200」
位だね、と大体見当がつくようになります。
これが出来るようになると、カメラーのオート設定に頼らずに
自分の感性で写真の絵作りが出来るようになります(必ず!)。
② Python EV計算機叩き台
こんな形でどうかなと叩き台を作りました。
・明るさの変化はすべて1段づつの変化とします。
・計算した被写体の説明の枠を後で大きくします。
・dataはcodeに書き込みます(data fileの添付が不要になる)。
・EVの計算式などはこれから考えます。
---------------- ここまでのcode --------------------------
# EV計算機ver1.1py 7/8/2019
import tkinter as tk
from tkinter import StringVar
root = tk.Tk()
root.title("kumasanのEV計算機")
root.geometry("280x400")
lbl_1=tk.Label(root,text="ISO")
lbl_1.place(x=20, y=10)
lbl_2=tk.Label(root,text="絞り値")
lbl_2.place(x=100, y=10)
lbl_3=tk.Label(root,text="シャッター速度(秒)")
lbl_3.place(x=170, y=10)
lbl_4=tk.Label(root,text="EV値")
lbl_4.place(x=20, y=250)
lbl_5=tk.Label(root,text="被写体の概略")
lbl_5.place(x=20, y=300)
### Listbox for ISO ###
var_1 = StringVar(value=["50", "100", "200","400","800","1600","3200","6400","12800","25600"])
listbox_1 = tk.Listbox(root,
listvariable=var_1,
#selectmode = 'browse', #browse...単一 / extended...複数
height = 10,
width=8,
)
listbox_1.place(x=20, y=30)
### Listbox for 絞り ###
var_2 = StringVar(value=["1.2", "1.4", "2","2.8","4","5.6","11","16","22","32"])
listbox_2 = tk.Listbox(root,
listvariable=var_2,
#selectmode = 'browse', #browse...単一 / extended...複数
height = 10,
width=8,
)
listbox_2.place(x=100, y=30)
### Listbox for シャッター速度 ###
var_3 = StringVar(value=["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"])
listbox_3 = tk.Listbox(root,
listvariable=var_3,
#selectmode = 'browse', #browse...単一 / extended...複数
height = 19,
width=8,
)
listbox_3.place(x=190, y=30)
txt_1=tk.Entry(width=25)
txt_1.insert(tk.END,"明るさの理論値は EV=14 ")
txt_1.place(x=20, y=270)
txt_2=tk.Entry(text="通常の晴れの公園の明るさ", width=25)
txt_2.insert(tk.END,"通常の晴れの公園の明るさ")
txt_2.place(x=20, y=320)
root.mainloop()
----------------------------
③ PythonのGUI(tkinter)は難しい
難しいから遣り甲斐があるのだけれど、もう一週間も奮闘してるままだ駄目。
何が駄目かというと、ISO値や絞り値を選んだら即それに対するEV値を
表示させようとしているが、複数のリストだと上手く行かない。
こんな形で絞り値に対するEV値は表示できているが、ISO値に対するEV値を
表示させようとするとエラーとなる。 ISO値だけなら動作するけれど
複数リストだとうまく行かない。
codeを載せても仕方ないので図だけ載せます。
④ ISO, 絞り、シャッター速度のEV値の算出迄できた
・リストボックスからのISO値、F値、T値は
取得できました。
・その値に対する明るさの値(EV値)も表示できました。
・でもそれを数式に入れると表示できないのです。
・数式は正しいのですが、変数がそのスコープ(適用範囲)から
どうも外れて使おうとしているらしいのです。
・丸一日奮闘しているのですが、自分のPythonのレベルが低くて
まだ解決しておりません。
そんなわけでcodeを上げても意味がないので、図にも何が問題に
なっているのか書いておきました。
訂正:図に「5+7+2」と有りますが、正確には「-5+7+2=4EV」という位暗い場所での測光ということになります。
要するに、こんな暗い場所では25,600のISO値が必要という意味です。
次で完成品登場(予定?)