Python/CGIスクリプト卸問屋は創業以来4,573,630,736名のお客様にご愛顧いただいております。

創業132年を誇る超老舗のPython/CGIスクリプト卸問屋スクリプト卸問屋へようこそ。当店では.....省略

ファイルのリスト
  1. project/chart.pyソースひらく
  2. project/crash.pyソースひらく
  3. project/obs.pyソースひらく
  4. project/pycalc.pywのソースとじる
project/pycalc.pyw
# -*- coding: cp932 -*-

"""
これは CGI ではなく wxPython のテスト用です。
コマンドプロンプトではなくウィンドウの中で動きます。
Python 本体 http://www.python.org/ とは別に
wxPython runtime http://www.wxpython.org/ のインストールが必要。
自分が使っている Python のバージョンにあったものだけを入れればおーけー
ansi と unicode の2種類ありますがたぶん unicode のほうがいいと思います。
Windows だとこのファイルを pycalc.pyw で保存してダブルクリックするだけ♪
キーボードの種類によっては意図したとおりに動かないかもしれません。
ご多分に漏れず py2exe http://www.py2exe.org/ なんてのもあるので
バイナリにもできます。
"""

import wx

class Calc(wx.App):

    title      = 'Py電卓'
    position   = (-1, -1)
    size       = (600, 70)
    expression = '[Enter]計算/リセット | [BS]/[Del]一文字削除 | [_]に結果履歴格納 | [↑][↓]式の履歴 | [Esc]終了'
    maxhistory = 10
    history    = ['']
    temporary  = ''
    tenkey     = {
        ord(';'): '*',
        226     : ord('_'),
        372     : ord("\n"),
        391     : 42,
        392     : 43,
        394     : 45,
        395     : 46,
        396     : 47,
    }
    meta       = None
    selected   = 0

    def CreateWindow(self):
        for i in xrange(0, 10):
            self.tenkey[326 + i] = 48 + i
        frame = wx.Frame(None, -1, self.title, self.position, self.size)
        self.meta = wx.Button(frame, -1)
        self.meta.SetToolTipString(self.expression)
        self.meta.Bind(wx.EVT_KEY_DOWN, self.EventKeyHandler)
        self.SetTopWindow(frame)
        self.PrintValue(self.expression)
        self.expression = ''
        return frame.Show(True)

    def EventKeyHandler(self, event):
        key = event.GetKeyCode()
        print key
        if self.tenkey.has_key(key):
            key = self.tenkey.get(key)
        if key == 27:
            self.ExitMainLoop()
        elif key in [ord("\n"), ord("\r")]:
            arr = [self.expression]
            i = 0
            for value in self.history:
                if value and value != self.expression and i < self.maxhistory - 1:
                    arr.append(value)
                    i += 1
            self.history = arr
            try:
                self.expression = eval(self.expression.replace('_', self.temporary))
                self.temporary = str(self.expression)
            except:
                self.expression = 0
            self.selected = -1
        elif key in [ord("\b"), 127]:
            self.expression = self.expression[:-1]
        elif key == 317:
            if self.selected < 0:
                self.selected = 0
            if 0 < self.selected:
                self.selected -= 1
            self.expression = self.history[self.selected]
        elif key == 319:
            if self.selected < len(self.history) - 1:
                self.selected += 1
            self.expression = self.history[self.selected]
        elif key < 256:
            if type(self.expression) != type(''):
                self.expression = ''
            self.expression += chr(key)
        self.PrintValue(self.expression);

    def PrintValue(self, value):
        self.meta.SetLabel(str(value))

debug = 0
app = Calc(debug)
app.CreateWindow()
app.MainLoop()
注意事項
メールで連絡
ちょこっとテスト
となりの問屋

©2018 Python/CGIスクリプト卸問屋