Lambda 方法未在 python 程序中调用



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

类第二页(tk.框架(:

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")

和:-

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

我想这个问题会是非常基本的。我仍然是python编程的新手,请帮助我。

问题似乎是没有调用self.e_detail

, command=lambda: self.e_detail

基本上告诉按钮调用一个匿名方法,该方法提到了一个名为self.e_detail的方法。而是通过将其替换为以下内容来调用该方法:

, command=lambda: self.e_detail()

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

, command=self.e_detail

相关内容

最新更新