Spaces:
Running
Running
<HTML> | |
<HEAD><TITLE>Python Script sample: Calculator</TITLE></HEAD> | |
<BODY><FONT FACE=ARIAL SIZE=3> <!-- global default --> | |
<SCRIPT LANGUAGE="Python"> | |
Accum = 0.0 | |
FlagNewNum = 1 | |
NullOp = lambda x,y: y | |
PendingOp = NullOp | |
numberButNames = ['Zero','One','Two','Three','Four','Five','Six','Seven','Eight','Nine'] | |
def NumPressed(Num): | |
print "NumPressed", Num | |
global FlagNewNum | |
if FlagNewNum: | |
ax.document.Keypad.ReadOut.Value = Num | |
FlagNewNum = None | |
else: | |
if ax.document.Keypad.ReadOut.Value == "0": | |
ax.document.Keypad.ReadOut.Value = str(Num) | |
else: | |
ax.document.Keypad.ReadOut.Value= ax.document.Keypad.ReadOut.Value + str(Num) | |
for i in range(len(numberButNames)): | |
exec "def %s_OnClick():\tNumPressed(%d)\n" % (numberButNames[i],i) | |
def Decimal_OnClick(): | |
global curReadOut, FlagNewNum | |
curReadOut = ax.document.Keypad.ReadOut.Value | |
if FlagNewNum: | |
curReadOut = "0." | |
FlagNewNum = None | |
else: | |
if not ("." in curReadOut): | |
curReadOut = curReadOut + "." | |
ax.document.Keypad.ReadOut.Value = curReadOut | |
import sys, string | |
def Operation(Op, fn): | |
global FlagNewNum, PendingOp, Accum | |
ReadOut = ax.document.Keypad.ReadOut.Value | |
print "Operation", Op, ReadOut, PendingOp, Accum | |
if FlagNewNum: | |
PendingOp = NullOp | |
else: | |
FlagNewNum = 1 | |
Accum = PendingOp( Accum, string.atof(ReadOut) ) | |
ax.document.Keypad.ReadOut.Value = str(Accum) | |
PendingOp = fn | |
def ClearEntry_OnClick(): | |
# Remove current number and reset state | |
global FlagNewNum | |
ax.document.Keypad.ReadOut.Value = "0" | |
FlagNewNum = 1 | |
def Clear_OnClick(): | |
global Accum, PendingOp | |
Accum = 0 | |
PendingOp = NullOp | |
ClearEntry_OnClick() | |
def Neg_OnClick(): | |
ax.document.Keypad.ReadOut.Value = str(-string.atof(ax.document.Keypad.ReadOut.Value)) | |
</SCRIPT> | |
<form action="" Name="Keypad"> | |
<TABLE> | |
<B> | |
<TABLE BORDER=2 WIDTH=50 HEIGHT=60 CELLPADDING=1 CELLSPACING=5> | |
<CAPTION ALIGN=top> <b>Calculator</b><p> </CAPTION> | |
<TR> | |
<TD COLSPAN=3 ALIGN=MIDDLE><INPUT NAME="ReadOut" TYPE="Text" SIZE=24 VALUE="0" WIDTH=100%></TD> | |
<TD></TD> | |
<TD><INPUT NAME="Clear" TYPE="Button" VALUE=" C " ></TD> | |
<TD><INPUT NAME="ClearEntry" TYPE="Button" VALUE=" CE " ></TD> | |
</TR> | |
<TR> | |
<TD><INPUT NAME="Seven" TYPE="Button" VALUE=" 7 " ></TD> | |
<TD><INPUT NAME="Eight" TYPE="Button" VALUE=" 8 " ></TD> | |
<TD><INPUT NAME="Nine" TYPE="Button" VALUE=" 9 " ></TD> | |
<TD></TD> | |
<TD><INPUT NAME="Neg" TYPE="Button" VALUE=" +/- " ></TD> | |
<TD><INPUT NAME="Percent" TYPE="Button" VALUE=" % " OnClick="Operation('%', lambda x,y: x*y/100.0)"></TD> | |
</TR> | |
<TR> | |
<TD><INPUT NAME="Four" TYPE="Button" VALUE=" 4 " ></TD> | |
<TD><INPUT NAME="Five" TYPE="Button" VALUE=" 5 " ></TD> | |
<TD><INPUT NAME="Six" TYPE="Button" VALUE=" 6 " ></TD> | |
<TD></TD> | |
<TD ALIGN=MIDDLE><INPUT NAME="Plus" TYPE="Button" VALUE=" + " OnClick="Operation('+', lambda x,y: x+y)"></TD> | |
<TD ALIGN=MIDDLE><INPUT NAME="Minus" TYPE="Button" VALUE=" - " OnClick="Operation('-', lambda x,y: x-y)"></TD> | |
</TR> | |
<TR> | |
<TD><INPUT NAME="One" TYPE="Button" VALUE=" 1 " ></TD> | |
<TD><INPUT NAME="Two" TYPE="Button" VALUE=" 2 " ></TD> | |
<TD><INPUT NAME="Three" TYPE="Button" VALUE=" 3 " ></TD> | |
<TD></TD> | |
<TD ALIGN=MIDDLE><INPUT NAME="Multiply" TYPE="Button" VALUE=" * " OnClick="Operation('*', lambda x,y: x*y)" ></TD> | |
<TD ALIGN=MIDDLE><INPUT NAME="Divide" TYPE="Button" VALUE=" / " OnClick="Operation('/', lambda x,y: x/y)" ></TD> | |
</TR> | |
<TR> | |
<TD><INPUT NAME="Zero" TYPE="Button" VALUE=" 0 " ></TD> | |
<TD><INPUT NAME="Decimal" TYPE="Button" VALUE=" . " ></TD> | |
<TD COLSPAN=3></TD> | |
<TD><INPUT NAME="Equals" TYPE="Button" VALUE=" = " OnClick="Operation('=', lambda x,y: x)"></TD> | |
</TR></TABLE></TABLE></B> | |
</FORM> | |
</FONT></BODY></HTML> | |