<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=TkinterProgramming%2FCalculator2</id>
	<title>TkinterProgramming/Calculator2 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=TkinterProgramming%2FCalculator2"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=TkinterProgramming/Calculator2&amp;action=history"/>
	<updated>2026-05-14T13:11:59Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=TkinterProgramming/Calculator2&amp;diff=39738&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:28, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=TkinterProgramming/Calculator2&amp;diff=39738&amp;oldid=prev"/>
		<updated>2021-02-07T05:28:14Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;컴파일을 위해서는 메가 위젯 모듈을 설치해야한다.&lt;br /&gt;
http://pmw.sourceforge.net/&lt;br /&gt;
 from Tkinter import * &lt;br /&gt;
 import Pmw &lt;br /&gt;
 &lt;br /&gt;
 class SLabel(Frame): &lt;br /&gt;
     def __init__(self, master, left1, right1): &lt;br /&gt;
         Frame.__init__(self, master, bg=&amp;#039;gray40&amp;#039;) &lt;br /&gt;
         self.pack(side=LEFT, expand=YES, fill=BOTH) &lt;br /&gt;
         Label(self, text=left1, fg=&amp;#039;steelblue1&amp;#039;, &lt;br /&gt;
               font=(&amp;quot;arial&amp;quot;, 6, &amp;quot;bold&amp;quot;), width=5, bg=&amp;#039;gray40&amp;#039;).pack(&lt;br /&gt;
               side = LEFT, expand=YES, fill=BOTH)&lt;br /&gt;
         &lt;br /&gt;
         Label(self, text=right1, fg=&amp;#039;white&amp;#039;, &lt;br /&gt;
               font=(&amp;quot;arial&amp;quot;, 6, &amp;quot;bold&amp;quot;), width=1, bg=&amp;#039;gray40&amp;#039;).pack(&lt;br /&gt;
               side = RIGHT, expand=YES, fill=BOTH) &lt;br /&gt;
 &lt;br /&gt;
 class Key(Button): &lt;br /&gt;
     def __init(self, master, font=(&amp;#039;arial&amp;#039;, 8, &amp;#039;bold&amp;#039;), fg=&amp;#039;white&amp;#039;,&lt;br /&gt;
                width=5, borderwidth=5, **kw): &lt;br /&gt;
         kw[&amp;#039;font&amp;#039;] = font &lt;br /&gt;
         kw[&amp;#039;fg&amp;#039;] = fg &lt;br /&gt;
         kw[&amp;#039;width&amp;#039;] = width &lt;br /&gt;
         kw[&amp;#039;borderwidth&amp;#039;] = borderwidth &lt;br /&gt;
 &lt;br /&gt;
         apply(Button.__init__, (self, master), kw) &lt;br /&gt;
 &lt;br /&gt;
         self.pack(side=LEFT, expand=NO, fill=NONE) &lt;br /&gt;
 &lt;br /&gt;
 class Evaluator:&lt;br /&gt;
     def __init__(self):&lt;br /&gt;
         self.myNameSpace = {}&lt;br /&gt;
         self.runpython(&amp;quot;from math import *&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
     def runpython(self, code):&lt;br /&gt;
         try:&lt;br /&gt;
             return repr(eval(code, self.myNameSpace, self.myNameSpace))&lt;br /&gt;
         except SyntaxError:&lt;br /&gt;
             try :&lt;br /&gt;
                 exec code  in self.myNameSpace, self.myNamespace&lt;br /&gt;
             except:&lt;br /&gt;
                 return &amp;#039;Error&amp;#039;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 class Calculator(Frame):&lt;br /&gt;
     def __init__(self, parent = None):&lt;br /&gt;
         Frame.__init__(self, bg=&amp;#039;gray40&amp;#039;)&lt;br /&gt;
         self.pack(expand = YES, fill = BOTH)&lt;br /&gt;
         self.master.title(&amp;#039;Tkinter Toolkit TT - 42&amp;#039;)&lt;br /&gt;
         self.master.iconname(&amp;#039;Tk-42&amp;#039;)&lt;br /&gt;
         self.calc = Evaluator()&lt;br /&gt;
         self.buildCalculator()&lt;br /&gt;
         self.actionDict = { &amp;#039;second&amp;#039; : self.doThis, &amp;#039;mode&amp;#039;: self.doThis,&lt;br /&gt;
                             &amp;#039;delete&amp;#039; : self.doThis, &amp;#039;alpha&amp;#039; : self.doThis,&lt;br /&gt;
                             &amp;#039;stat&amp;#039; : self.doThis, &amp;#039;math&amp;#039; : self.doThis,&lt;br /&gt;
                             &amp;#039;matrix&amp;#039;: self.doThis, &amp;#039;program&amp;#039; : self.doThis,&lt;br /&gt;
                             &amp;#039;vars&amp;#039; : self.doThis, &amp;#039;clear&amp;#039; : self.clearall,&lt;br /&gt;
                             &amp;#039;sin&amp;#039; : self.doThis, &amp;#039;cos&amp;#039; : self.doThis,&lt;br /&gt;
                             &amp;#039;tan&amp;#039; : self.doThis, &amp;#039;up&amp;#039; : self.doThis,&lt;br /&gt;
                             &amp;#039;X1&amp;#039; : self.doThis, &amp;#039;X2&amp;#039; : self.doThis,&lt;br /&gt;
                             &amp;#039;log&amp;#039; : self.doThis, &amp;#039;ln&amp;#039; : self.doThis,&lt;br /&gt;
                             &amp;#039;store&amp;#039; : self.doThis, &amp;#039;off&amp;#039; : self.turnoff,&lt;br /&gt;
                             &amp;#039;neg&amp;#039; : self.doThis, &amp;#039;enter&amp;#039; : self.doEnter,&lt;br /&gt;
                             }&lt;br /&gt;
 &lt;br /&gt;
         self.current = &amp;#039;&amp;#039;&lt;br /&gt;
 &lt;br /&gt;
     def doThis(self, action):&lt;br /&gt;
         print &amp;#039;&amp;quot;%s&amp;quot; has not been implemented&amp;#039; % action&lt;br /&gt;
 &lt;br /&gt;
     def turnoff(self, *args):&lt;br /&gt;
         self.quit()&lt;br /&gt;
 &lt;br /&gt;
     def clearall(self, *args):&lt;br /&gt;
         self.current = &amp;quot;&amp;quot;&lt;br /&gt;
         self.display.component(&amp;#039;text&amp;#039;).delete(1.0, END)&lt;br /&gt;
 &lt;br /&gt;
     def doEnter(self, *args):&lt;br /&gt;
         self.display.insert(END, &amp;#039;\n&amp;#039;)&lt;br /&gt;
         result = self.calc.runpython(self.current)&lt;br /&gt;
         if result :&lt;br /&gt;
             self.display.insert(END, &amp;#039;%s\n&amp;#039; % result, &amp;#039;ans&amp;#039;)&lt;br /&gt;
         self.current = &amp;quot;&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
     def doKeypress(self, event):&lt;br /&gt;
         key = event.char&lt;br /&gt;
         if key != &amp;#039;\b&amp;#039;:&lt;br /&gt;
             self.current = self.current + key&lt;br /&gt;
         else:&lt;br /&gt;
             self.current = self.currnet[:-1]&lt;br /&gt;
 &lt;br /&gt;
     def keyAction(self, key):&lt;br /&gt;
         self.display.insert(END, key)&lt;br /&gt;
         self.current = self.currnet + key&lt;br /&gt;
 &lt;br /&gt;
     def evalAction(self, action):&lt;br /&gt;
         try:&lt;br /&gt;
             self.actionDict[action](action)&lt;br /&gt;
         except:&lt;br /&gt;
             pass&lt;br /&gt;
 &lt;br /&gt;
     def buildCalculator(self):&lt;br /&gt;
         FUN = 1&lt;br /&gt;
         KEY = 0&lt;br /&gt;
         KC1 = &amp;#039;gray30&amp;#039;&lt;br /&gt;
         KC2 = &amp;#039;gray50&amp;#039;&lt;br /&gt;
         KC3 = &amp;#039;steelblue1&amp;#039;&lt;br /&gt;
         KC4 = &amp;#039;steelblue&amp;#039;&lt;br /&gt;
 &lt;br /&gt;
         keys = [&lt;br /&gt;
             [ (&amp;#039;2nd&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, KC3, FUN, &amp;#039;second&amp;#039;),&lt;br /&gt;
               (&amp;#039;Mode&amp;#039;, &amp;#039;Quit&amp;#039;, &amp;#039;&amp;#039;, KC1, FUN, &amp;#039;mode&amp;#039;),&lt;br /&gt;
               (&amp;#039;Del&amp;#039;, &amp;#039;Ins&amp;#039;, &amp;#039;&amp;#039;, KC1, FUN, &amp;#039;delete&amp;#039;),&lt;br /&gt;
               (&amp;#039;Alpha&amp;#039;, &amp;#039;Lock&amp;#039;, &amp;#039;&amp;#039;, KC2, FUN, &amp;#039;alpha&amp;#039;),&lt;br /&gt;
               (&amp;#039;Stat&amp;#039;, &amp;#039;List&amp;#039;, &amp;#039;A&amp;#039;, KC1, FUN, &amp;#039;stat&amp;#039;)],&lt;br /&gt;
             [ (&amp;#039;Math&amp;#039;, &amp;#039;Test&amp;#039;, &amp;#039;B&amp;#039;, KC1, FUN, &amp;#039;math&amp;#039;),&lt;br /&gt;
               (&amp;#039;Mtrx&amp;#039;, &amp;#039;Angle&amp;#039;, &amp;#039;C&amp;#039;, KC1, FUN, &amp;#039;matrix&amp;#039;),&lt;br /&gt;
               (&amp;#039;Prgm&amp;#039;, &amp;#039;Draw&amp;#039;, &amp;#039;&amp;#039;, KC1, FUN, &amp;#039;program&amp;#039;),&lt;br /&gt;
               (&amp;#039;Vars&amp;#039;, &amp;#039;YVars&amp;#039;, &amp;#039;&amp;#039;, KC1, FUN, &amp;#039;vars&amp;#039;),&lt;br /&gt;
               (&amp;#039;Clr&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, KC1, FUN, &amp;#039;clear&amp;#039;)],&lt;br /&gt;
             [ (&amp;#039;X-1&amp;#039;, &amp;#039;Abs&amp;#039;, &amp;#039;D&amp;#039;, KC1, FUN, &amp;#039;X1&amp;#039;),&lt;br /&gt;
               (&amp;#039;Sin&amp;#039;, &amp;#039;Sin-1&amp;#039;, &amp;#039;E&amp;#039;, KC1, FUN, &amp;#039;sin&amp;#039;),&lt;br /&gt;
               (&amp;#039;Cos&amp;#039;, &amp;#039;Cos-1&amp;#039;, &amp;#039;F&amp;#039;, KC1, FUN, &amp;#039;cos&amp;#039;),&lt;br /&gt;
               (&amp;#039;Tan&amp;#039;, &amp;#039;Tan-1&amp;#039;, &amp;#039;G&amp;#039;, KC1, FUN, &amp;#039;tan&amp;#039;),&lt;br /&gt;
               (&amp;#039;^&amp;#039;, &amp;#039;PI&amp;#039;, &amp;#039;H&amp;#039;, KC1, FUN, &amp;#039;up&amp;#039;)],&lt;br /&gt;
             [ (&amp;#039;X2&amp;#039;, &amp;#039;Root&amp;#039;, &amp;#039;I&amp;#039;, KC1, FUN, &amp;#039;X2&amp;#039;),&lt;br /&gt;
               (&amp;#039;,&amp;#039;, &amp;#039;RE&amp;#039;, &amp;#039;J&amp;#039;, KC1, FUN, &amp;#039;,&amp;#039;),&lt;br /&gt;
               (&amp;#039;(&amp;#039;, &amp;#039;{&amp;#039;, &amp;#039;K&amp;#039;, KC1, FUN, &amp;#039;(&amp;#039;),&lt;br /&gt;
               (&amp;#039;)&amp;#039;, &amp;#039;}&amp;#039;, &amp;#039;L&amp;#039;, KC1, FUN, &amp;#039;)&amp;#039;),&lt;br /&gt;
               (&amp;#039;/&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;,&amp;#039;, KC4, FUN, &amp;#039;/&amp;#039;)],&lt;br /&gt;
             [ (&amp;#039;Log&amp;#039;, &amp;#039;10x&amp;#039;, &amp;#039;N&amp;#039;, KC1, FUN, &amp;#039;log&amp;#039;),&lt;br /&gt;
               (&amp;#039;7&amp;#039;, &amp;#039;Un-1&amp;#039;, &amp;#039;O&amp;#039;, KC2, KEY, &amp;#039;7&amp;#039;),&lt;br /&gt;
               (&amp;#039;8&amp;#039;, &amp;#039;Vn-1&amp;#039;, &amp;#039;P&amp;#039;, KC2, KEY, &amp;#039;8&amp;#039;),&lt;br /&gt;
               (&amp;#039;9&amp;#039;, &amp;#039;n&amp;#039;, &amp;#039;Q&amp;#039;, KC2, KEY, &amp;#039;9&amp;#039;),&lt;br /&gt;
               (&amp;#039;X&amp;#039;, &amp;#039;[&amp;#039;, &amp;#039;R&amp;#039;, KC4, KEY, &amp;#039;*&amp;#039;)],&lt;br /&gt;
             [ (&amp;#039;Ln&amp;#039;, &amp;#039;ex&amp;#039;, &amp;#039;S&amp;#039;, KC1, FUN, &amp;#039;ln&amp;#039;),&lt;br /&gt;
               (&amp;#039;4&amp;#039;, &amp;#039;L4&amp;#039;, &amp;#039;T&amp;#039;, KC2, KEY, &amp;#039;4&amp;#039;),&lt;br /&gt;
               (&amp;#039;5&amp;#039;, &amp;#039;L5&amp;#039;, &amp;#039;U&amp;#039;, KC2, KEY, &amp;#039;5&amp;#039;),&lt;br /&gt;
               (&amp;#039;6&amp;#039;, &amp;#039;L6&amp;#039;, &amp;#039;V&amp;#039;, KC2, KEY, &amp;#039;6&amp;#039;),&lt;br /&gt;
               (&amp;#039;-&amp;#039;, &amp;#039;]&amp;#039;, &amp;#039;W&amp;#039;, KC4, KEY, &amp;#039;-&amp;#039;)],&lt;br /&gt;
             [ (&amp;#039;STO&amp;#039;, &amp;#039;RCL&amp;#039;, &amp;#039;X&amp;#039;, KC1, FUN, &amp;#039;store&amp;#039;),&lt;br /&gt;
               (&amp;#039;1&amp;#039;, &amp;#039;L1&amp;#039;, &amp;#039;Y&amp;#039;, KC2, KEY, &amp;#039;1&amp;#039;),&lt;br /&gt;
               (&amp;#039;2&amp;#039;, &amp;#039;L2&amp;#039;, &amp;#039;Z&amp;#039;, KC2, KEY, &amp;#039;2&amp;#039;),&lt;br /&gt;
               (&amp;#039;3&amp;#039;, &amp;#039;L3&amp;#039;, &amp;#039;&amp;#039;, KC2, KEY, &amp;#039;3&amp;#039;),&lt;br /&gt;
               (&amp;#039;+&amp;#039;, &amp;#039;MEM&amp;#039;, &amp;#039;&amp;quot;&amp;#039;, KC4, KEY, &amp;#039;+&amp;#039;)],&lt;br /&gt;
             [ (&amp;#039;Off&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, KC1, FUN, &amp;#039;off&amp;#039;),&lt;br /&gt;
               (&amp;#039;0&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, KC2, KEY, &amp;#039;0&amp;#039;),&lt;br /&gt;
               (&amp;#039;.&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, KC2, KEY, &amp;#039;.&amp;#039;),&lt;br /&gt;
               (&amp;#039;(-)&amp;#039;, &amp;#039;ANS&amp;#039;, &amp;#039;?&amp;#039;, KC2, FUN, &amp;#039;neg&amp;#039;),&lt;br /&gt;
               (&amp;#039;Enter&amp;#039;, &amp;#039;Enter&amp;#039;, &amp;#039;&amp;#039;, KC4, FUN, &amp;#039;enter&amp;#039;)]]&lt;br /&gt;
                 &lt;br /&gt;
         self.display = Pmw.ScrolledText(self, hscrollmode = &amp;#039;dynamic&amp;#039;,&lt;br /&gt;
                                         vscrollmode = &amp;#039;dynamic&amp;#039;, hull_relief = &amp;#039;sunken&amp;#039;,&lt;br /&gt;
                                         hull_background=&amp;#039;gray40&amp;#039;, hull_borderwidth = 10,&lt;br /&gt;
                                         text_background=&amp;#039;honeydew4&amp;#039;, text_width = 16,&lt;br /&gt;
                                         text_foreground = &amp;#039;black&amp;#039;, text_height=6,&lt;br /&gt;
                                         text_padx = 10, text_pady=10, text_relief = &amp;#039;groove&amp;#039;,&lt;br /&gt;
                                         text_font = (&amp;#039;arial&amp;#039;, 12, &amp;#039;bold&amp;#039;))&lt;br /&gt;
 &lt;br /&gt;
         self.display.pack(side=TOP, expand = YES, fill=BOTH)&lt;br /&gt;
 &lt;br /&gt;
         self.display.tag_config(&amp;#039;ans&amp;#039;, foreground=&amp;#039;white&amp;#039;)&lt;br /&gt;
         self.display.component(&amp;#039;text&amp;#039;).bind(&amp;#039;&amp;amp;lt;Key&amp;amp;gt;&amp;#039;, self.doKeypress)&lt;br /&gt;
         self.display.component(&amp;#039;text&amp;#039;).bind(&amp;#039;&amp;amp;lt;Return&amp;amp;gt;&amp;#039;, self.doEnter)&lt;br /&gt;
 &lt;br /&gt;
         for row in keys:&lt;br /&gt;
             rowa = Frame(self, bg=&amp;#039;gray40&amp;#039;)&lt;br /&gt;
             rowb = Frame(self, bg=&amp;#039;gray40&amp;#039;)&lt;br /&gt;
 &lt;br /&gt;
             for p1, p2, p3, color, ktype, func in row:&lt;br /&gt;
                 if ktype == FUN:&lt;br /&gt;
                     a = lambda s=self, a = func : s.evalAction(a)&lt;br /&gt;
                 else:&lt;br /&gt;
                     a = lambda s=self, k = func : s.keyAction(k)&lt;br /&gt;
                 SLabel(rowa, p2, p3)&lt;br /&gt;
                 Key(rowb, text=p1, bg=color, command=a)&lt;br /&gt;
 &lt;br /&gt;
             rowa.pack(side=TOP, expand=YES, fill=BOTH)&lt;br /&gt;
             rowb.pack(side=TOP, expand=YES, fill=BOTH)&lt;br /&gt;
 &lt;br /&gt;
 Calculator().mainloop()&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>