File "C:\python\lib\lib-tk\Tkinter.py", line 1345, in __call__
return self.func(*args)
File "calculator_version2.py", line 105, in <lambda>
self.buttonPlu = Button(self.container3,text='+',command = lambda: self.oprC
lick('+',self.str1.get()))
AttributeError: 'str' object has no attribute 'get'
from Tkinter import *
import string
class Mycalc:
def buttonClick(self,str2,str3):
if str2 == ".":
if self.dotFlag:
pass
else:
self.dotFlag = True
self.operand = str3 + str2
else:
self.operand = str3 + str2
def oprClick(self,str11,oprt):
if oprt == "+":
if self.result == "0":
self.result = str11
else:
self.result = string.atof(self.result) + string.atof(str11)
elif oprt == "-":
self.result = str11
else:
self.result = string.atof(self.result) - string.atof(str11)
elif str2 == "*":
if self.result == "0":
self.result = str11
else:
self.result = string.atof(self.result) * string.atof(str11)
elif str2 == "/":
if self.result == "0":
self.result = str11
else:
self.result = string.atof
(self.result) / string.atof(str11)
self.entryWidget.icursor(0)
self.entryWidget.delete(0,END)
self.entryWidget.insert(INSERT,self.result)
def __init__(self,master):
self.container1 = Frame(master,width=200,height=200,background='')
self.container1.pack()
self.str1 = StringVar()
self.str1 = "0"
self.entryWidget = Entry(
self.container1,textvariable=self.str1)
self.entryWidget.pack(side=TOP)
self.container2 = Frame(master,background='')
self.container2.pack()
self.container3 = Frame(master,background='')
self.container3.pack()
self.operand = "0"
self.result = "0"
self.dotFlag = False
def make_buttons(self):
self.buttonOne = Button(self.container2,text='1')
self.buttonOne.grid(row=0,column=0)
self.buttonTwo = Button(self.container2,text='2')
self.buttonTwo.grid
(row=0,column=1)
self.buttonThree = Button(self.container2,text='3')
self.buttonThree.grid(row=0,column=2)
self.buttonFour = Button(self.container2,text='4')
self.buttonFour.grid
(row=1,column=0)
self.buttonFive = Button(self.container2,text='5')
self.buttonFive.grid(row=1,column=1)
self.buttonSix = Button(self.container2,text='6')
self.buttonSix.grid(row=1,column=2)
self.buttonSeven = Button(self.container2,text='7')
self.buttonSeven.grid(row=2,column=0)
self.buttonEight = Button(self.container2,text='8')
self.buttonEight.grid(row=2,column=1)
self.buttonNine = Button(self.container2,text='9')
self.buttonNine.grid(row=2,column=2)
self.buttonZero = Button(self.container2,text='0')
self.buttonZero.grid(row=3,column=0)
self.buttonPoint = Button(self.container2,text='.')
self.buttonPoint.grid(row=3,column=1)
def make_oprbuttons(self):
self.buttonPlu = Button(self.container3,text='+',command = lambda: self.oprClick('+',self.str1.get()))
self.buttonPlu.pack(side=LEFT)
self.buttonMin = Button(self.container3,text='-',command = lambda: self.oprClick('-',self.str1.get()))
self.buttonMin.pack(side=LEFT)
self.buttonMul = Button(self.container3,text='*',command = lambda: self.oprClick('*',self.str1.get()))
self.buttonMul.pack(side=LEFT)
self.buttonDiv = Button(self.container3,text='/',command = lambda: self.oprClick('/',self.str1.get()))
self.buttonDiv.pack(side=LEFT)
self.buttonEqu = Button(self.container3,text='=',command = lambda: self.oprClick('=',self.str1.get()))
self.buttonEqu.pack(side=LEFT)
root = Tk()
mycalc = Mycalc(root)
mycalc.make_buttons()
mycalc.make_oprbuttons()
root.mainloop()
Asrarahmed Kadri wrote:
>
>
> Hi folks,
>
> I am trying to build a rudimentary calculator application using Tkinter...
>
> I have used one Entry widget for displaying the input and output data.
> All this is put in a class.
> The porblem is when I click teh '+' button, teh callback function is
> called but it gives me an error message: AttributeError: 'str' object
> has no attribute 'get'
>
> I have defined a variable, self.str1 = StringVar() to bind it with the
> entry widget and I am calling the function when + is clciked. The
> function is as follows:
>
> self.buttonPlu = Button(self.container3,text='+',command = lambda:
> self.oprClick('+',*self.str1.get()))*
>
> Can't we use the get() method to access the contents of the entry
> widget. Is there any other way to access the contents of the entry
> widget....???
The error message is saying that the object you are calling get() on is
a string, not a StringVar. Please post complete code and the complete
error message including traceback.
Kent
_______________________________________________
Tutor maillist - Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor
--
To HIM you shall return.
_______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor