被写体の明るさ(EV)計算機を作る ④

数年前にフォトマスター検定の受験用に、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(“280×400”)

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値が必要という意味です。 

 

次で完成品登場(予定?)

 

Python別館
何回も挫折しているクラスに再挑戦 ①

Python寺子屋も小学部は卒業して中等部に入学です。いままで何回もtryしたクラスの作成ですが、す …

Python別館
Python 1年間のまとめ 関数編 ②

Pythonは関数がないと働きません。関数とは簡単に言うと、特定の処理を纏めたもので、エクセルのSu …

Python別館
Python 1年間のまとめ method編 ③

前稿でwidget(部品)をウインドー(フォーム)上に張り付ける方法を纏めました。今回はそれらにデー …