Lambda方法没有在python程序中调用

时间:2018-03-17 05:44:36

标签: database tkinter python-3.5

我正在开发基于GUI的python项目。在传递self类的方法的按钮命令中没有效果,即该方法没有被调用。 没有显示编译时间或运行时错误,因此很难识别问题。源代码是:

class PageTwo(tk.Frame):

rad

由于源代码太长,我发现问题的两个块也分别在下面提到

def e_detail(self):
    soh_registeration.insert(u1.get(),p1.get(),s1.get(),m1.get(),em1.get(),ad1.get())
    messagebox.showinfo("DETAIL STORED", "YOUR INFORMATION IS STORED SECURELY")

def __init__(self, parent, controller):
    tk.Frame.__init__(self, parent)
    label = tk.Label(self, text="REGISTERATION DETAILS", font=LARGE_FONT)
    label.grid(pady=10,padx=10)
    label1 = tk.Label(self, text="USERNAME", font=TEXT)
    label1.grid(row=3,column=0)
    labelp = tk.Label(self, text="PASSWORD", font=TEXT)
    labelp.grid(row=4,column=0)
    cpdl = tk.Label(self, text="CONFIRM PASSWORD", font=TEXT)
    cpdl.grid(row=5,column=0)
    shopl = tk.Label(self, text="SHOP NAME", font=TEXT)
    shopl.grid(row=6,column=0)
    cl= tk.Label(self, text="MOBILE NO.:", font=TEXT)
    cl.grid(row=7,column=0)
    el = tk.Label(self, text="E-MAIL ID", font=TEXT)
    el.grid(row=8,column=0)
    al = tk.Label(self, text="AADHAR DETAIL", font=TEXT)
    al.grid(row=9,column=0)

    global u1,p1,p2,s1,m1,em1,ad1,button2
    u1=tk.StringVar()
    username= tk.Entry(self,textvariable=u1, bd=5)
    username.grid(row=3,column=1)

    p1=tk.StringVar()
    pd= tk.Entry(self,show='*',textvariable=p1, bd=5)
    pd.grid(row=4,column=1)

    p2=tk.StringVar()
    confpd= tk.Entry(self,show='*',textvariable=p2, bd=5)
    confpd.grid(row=5,column=1)

    s1=tk.StringVar()
    sn= tk.Entry(self,textvariable=s1, bd=5)
    sn.grid(row=6,column=1)

    m1=tk.StringVar()
    cn= tk.Entry(self,textvariable=m1, bd=5)
    cn.grid(row=7,column=1)

    em1=tk.StringVar()
    email= tk.Entry(self,textvariable=em1, bd=5)
    email.grid(row=8,column=1)

    ad1=tk.StringVar()
    an= tk.Entry(self,textvariable=ad1, bd=5)
    an.grid(row=9,column=1)




    button2 = tk.Button(self, text="SUBMIT YOUR DETAILS",
                        command=lambda: self.e_detail)
    button2.grid(row=10, column=0, padx=20, pady=20)

和: -

def e_detail(self):
    soh_registeration.insert(u1.get(),p1.get(),s1.get(),m1.get(),em1.get(),ad1.get())
    messagebox.showinfo("DETAIL STORED", "YOUR INFORMATION IS STORED SECURELY")
我猜这个问题非常基础。我还是python编程的新手,有人请帮帮我。

1 个答案:

答案 0 :(得分:1)

问题似乎是self.e_detail未被调用。

, command=lambda: self.e_detail

基本上告诉按钮调用提及名为self.e_detail的方法的匿名方法。而是通过将其替换为调用方法:

, command=lambda: self.e_detail()

或者由于该方法没有传递任何参数,只需:

, command=self.e_detail