Traceback is as under:
Traceback (most recent call last): 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.oprClick('+',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):
self.dotFlag = False if oprt == +: if self.result == 0: self.result = str11 else: self.result
= string.atof(self.result) + string.atof(str11)elif oprt == -:
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)
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()
On 10/26/06, Kent Johnson [EMAIL PROTECTED] wrote:
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 isa string, not a StringVar. Please post complete code and the completeerror message including traceback.Kent
___Tutor maillist-Tutor@python.orghttp://mail.python.org/mailman/listinfo/tutor
-- To HIM you shall return.
___
Tutor maillist - Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor