以前つくったGCCSは、けっこうがんばったものの二点ほど気に入らない部分があった。ひとつがTabキーで移動するエントリーの順番がよくないことで、もうひとつがエントリーに数値を打ち込んだときリアルタイムで計算して数値を更新してくれないことだ。Pythonを3.4にしたのを契機に、このツールを3ヴァージョンにするのと同時に上記二点の改造を試みた。

今回は数値の自動更新もばっちり。以下に今回の咬まれポイントの中で大切そうなものを書く。

1. Pythonが3になったことによる変更点。

  • Tkinter ではなく tkinter という名称になった。
  • 外部ファイルを開く際、 codecs モジュールを使わなくてよくなった。open() だけでよい。
  • 除算記号 / で小数点以下まで算出してくれるようになったので、整数がほしいなら // を使う。

2. try-except 構文とかいう神。

数値の自動更新を行う際に問題となったのが、エントリを空欄にするとツールがエラーを吐いて固まることだった。そこで最初こころみたのが、エントリ内に数値がないときは計算の関数をパスせよ、という isdigit() 関数での数値チェック。けれどこれはうまくゆかなかった。エントリ内の情報はただの文字列や数値ではなく、 tkinter.StringVar()IntVar() だったので isdigit() には「わけわかんねーもん扱わせんなボケ」と叱られる始末である。そこで見つけたのが try-except 構文。

# try except else finally
try:
    まずこの中身を実行する
except:
    # try 内でエラーが出るとこの部分が実行される
else:
    # try 内でエラーが出ないとこの部分が実行される
finally:
    # エラーが出ようが出まいが最後にこの部分が実行される

これを使えば数値チェックだのなんだの、まるで問題にならない。ただ以下のようにすればよい。

def foo():
    try:
        # 数値計算と結果反映
    except:
        pass
    self.after(500, foo)

というわけでGCCS2の中身はこんな感じになっている。エラーを無視できるというのはほんとうに革新的だった。いやまあ公式ドキュメント読めば普通に書いてあったことなんだけどね!

以下の記事からリンクされています

  1. http://www.katespadepurses.us.com/ kate spade new york
    http://www.airmax90shoes.us.com/ nike shoes
    http://www.pandorajewelryrings.us.com/ pandora necklace
    http://www.nikeairvapormaxflyknit.us.com/ nike air max 90
    http://www.kd10-shoes.us.com/ nike kd 8
    http://www.adidasnmdrunnerr1.us.com/ adidas boost
    http://www.longchampbag.us.com/ longchamp le pliage
    http://www.pumafentyrihannashoes.us.com/ puma rihanna
    http://www.fitflops-sale.us.com/ fitflop sale
    http://www.salomonspeedcross3.us.com/ salomon shoes
    http://www.adidasyeezy-350.us.com/ adidas originals nmd
    http://www.curry4-shoes.us.com/ curry 4 shoes
    http://www.jordans11shoes.us.com/ jordan 10
    http://www.kyrie-4.us.com/ kyrie 1
    http://www.nikeairmax-90.us.com/ air max tn
    http://www.fitflopsshoes.us.com/ fitflop sale
    http://www.pandorajewelryscharms.us.com/ pandora jewelry
    http://www.jordan11spacejams.us.com/ new jordans
    http://www.lebron15-shoes.us.com/ lebron
    http://www.pandora-jewelrysale.us.com/ pandora jewelry
    http://www.adidas-ultraboost.us.com/ adidas ultra boost
    http://www.yeezyboost350shoes.us.com/ yeezy boost 350
    http://www.hermesbirkin-handbags.us.com/ hermes birkin bag
    http://www.birkenstocksandalssale.us.com/ birkenstock
    http://www.louboutinredbottoms.us.com/ red bottoms for men
    ドリフトliuyuzhen