Search code examples
pythonpython-2.7tkintertk-toolkittkinter-entry

Cannot type in Python Entry Widget


I've got an interesting problem with the tk Entry widget. If I run the following test code,

from Tkinter import *
root =Tk()
def pfunc(self):
    print Input.get()
f=Frame(root)
f.pack()
Input=Entry(f)
#Input.bind("<Return>",pfunc)
Input.pack()
root.mainloop()

I can properly enter into the widget and print to console; however the following code, as part of a larger GUI, does not allow me to click in the Entry boxes at all.

    self.Tlabel = Label(self.TempFrame, text="Temp")
    self.Tlabel.pack( side = LEFT)
    self.Tenter = Entry(self.TempFrame,width=10, bd =5)
    self.Tenter.bind("<Return>",self.getFlux)
    self.Tenter.pack (side=RIGHT)
    self.Flabel = Label(self.FluxFrame, text="Flux")
    self.Flabel.pack( side = LEFT)
    self.Fenter = Entry(self.FluxFrame, width=10, bd =5)
    self.Fenter.bind("<Return>",self.getTemp)
    self.Fenter.pack(side = RIGHT)

def getFlux(self):
    for i in range(len(self.fit_tuples)):
        if self.fit_tuples[i][0]==self.currentBFMdate and self.fit_tuples[i][1]==self.cell.get():
            fit_data=self.fit_tuples[i][2]
            self.Fenter.set(fit_data[0]*np.exp(fit_data[1]*int(self.Tenter.get())))
        else:
            self.Fenter.set("Invalid")

def getTemp(self):
    for i in range(len(self.fit_tuples)):
        if self.fit_tuples[i][0]==self.currentBFMdate and self.fit_tuples[i][1]==self.cell.get():
            fit_data=self.fit_tuples[i][2]
            self.Tenter.set(np.log(float(self.Fenter.get())/fit_data[0])/fit_data[1])
        else:
            self.Tenter.set("Invalid")

Furthermore, if I run both codes on a separate windows PC I have the same problem. The only difference I can possibly think of is that I am using instance variables within a class; but it seems that other widgets are bound and working properly.


Solution

  • Basically, the bind method is passing "Return" as a parameter to getTemp. As another user suggested, just add another parameter to the function.