我正在做一个基于 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