rendered paste body##### KNOPF #####
class C_Knopf
def initialize(farbe, mofarbe, cover, addtext, row, column)
TkButton.new($r) {
text cover
bg farbe
activebackground mofarbe
width 2
command proc { $disp.addtext addtext }
grid(
"row" => row,
"column" => column,
"padx" => 1,
"pady" => 1,
"ipadx" => 10,
"ipady" => 1,
"sticky" => "ew"
)
}
end
end
##### DISPLAY #####
class C_Display
def initialize
@text = ""
@textobj = TkLabel.new($r) {
width 32
borderwidth 4
relief 'sunken'
foreground 'black'
background '#CCFFCC'
anchor 'w'
grid(
"row" => 0,
"column" => 1,
"columnspan" => 4,
"ipady" => 5,
"sticky" => "ew"
)
}
end
def gettext
return @text
end
def addtext(text)
exit if text == "%QUIT%"
$rechner.solve(@text) if text == "%SOLVE%"
@text = "" if text == "%CLEAR%"
@text += text if text[0].chr != "%"
update
end
def settext(text)
@text = text
end
def update
@textobj.text = @text
$r.update
end
end
##### RECHNER #####
class C_Rechner
def start
$r = TkRoot.new{ title 'Taschenrechner' }
$disp = C_Display.new
C_Knopf.new('#FF6666', '#FFAAAA', 'Quit', '%QUIT%', 1, 1)
C_Knopf.new('#FFDDDD', '#FFEEEE', 'Clear', '%CLEAR%', 1, 2)
C_Knopf.new('#DDDDDD', '#EEEEEE', '(', '(', 1, 3)
C_Knopf.new('#DDDDDD', '#EEEEEE', ')', ')', 1, 4)
C_Knopf.new('#DDDDFF', '#EEEEFF', '7', '7', 2, 1)
C_Knopf.new('#DDDDFF', '#EEEEFF', '8', '8', 2, 2)
C_Knopf.new('#DDDDFF', '#EEEEFF', '9', '9', 2, 3)
C_Knopf.new('#DDDDDD', '#EEEEEE', '+', '+', 2, 4)
C_Knopf.new('#DDDDFF', '#EEEEFF', '4', '4', 3, 1)
C_Knopf.new('#DDDDFF', '#EEEEFF', '5', '5', 3, 2)
C_Knopf.new('#DDDDFF', '#EEEEFF', '6', '6', 3, 3)
C_Knopf.new('#DDDDDD', '#EEEEEE', '-', '-', 3, 4)
C_Knopf.new('#DDDDFF', '#EEEEFF', '1', '1', 4, 1)
C_Knopf.new('#DDDDFF', '#EEEEFF', '2', '2', 4, 2)
C_Knopf.new('#DDDDFF', '#EEEEFF', '3', '3', 4, 3)
C_Knopf.new('#DDDDDD', '#EEEEEE', '*', '*', 4, 4)
C_Knopf.new('#DDDDDD', '#EEEEEE', '.', '.', 5, 1)
C_Knopf.new('#DDDDFF', '#EEEEFF', '0', '0', 5, 2)
C_Knopf.new('#DDDDDD', '#EEEEEE', '=', '%SOLVE%', 5, 3)
C_Knopf.new('#DDDDDD', '#EEEEEE', '/', '/', 5, 4)
Tk.mainloop
end
def solve(text)
ret = eval("#{text}").to_s
$disp.settext(ret)
end
end