[英]If error, return to the same window Python Tkinter 2.7
I would like to return to the same page if a field is not completed.如果某个字段未完成,我想返回到同一页面。
Here is what I have tried so far:这是我迄今为止尝试过的:
class Tenants(tk.Frame):
def __init__(self, master):
tk.Frame.__init__(self,master)
self.tenant_entries=[]
self.create_widgets(master)
def create_widgets(self,master):
label = tk.Label(self, text="Insert the name of the tenants")
start_button = tk.Button(self, text="Return to start page", command=lambda: master.switch_frame(StartPage))
new_tenant_button = tk.Button(self, text="Add tenant", command=self.add_tenant)
new_tenant_button.bind("<Return>", self.add_tenant)
new_tenant_button.grid(row=len(self.master.tenants), column=3, padx=4, pady=6, sticky="W")
next_button=tk.Button(self, text="Next", command=lambda:[master.switch_frame(Networks)] and self.tenants())
next_button.grid(row=1500, column=5,padx=4, pady=6, sticky="W")
label.pack(side="top", fill="x", pady=10)
start_button.pack()
new_tenant_button.pack()
next_button.pack()
for index, tenant in enumerate(self.master.tenants):
self.render_tenant_field(tenant, index)
def add_tenant(self):
self.master.tenants.append({'variable': tk.StringVar(self.master)})
self.master.switch_frame(Tenants)
def render_tenant_field(self, tenant, index):
entry_field = tk.Entry(self, textvariable=tenant['variable'])
entry_field.grid(row=index, column=0, columnspan=2, padx=4, pady=6, sticky="NEWS")
entry_field.pack()
self.tenant_entries.append(tenant['variable'])
def tenants(self):
with open("/home/dante/tenants.yml", "w") as f:
if self.tenant_entries:
f.write("--- #" + "\n")
f.write("clouds:" + "\n")
for ent in self.tenant_entries:
value=ent.get()
if value:
f.write(" "+value+":"+ "\n")
f.write(" username: admin"+"\n")
else:
tkMessageBox.showerror("tk", "No tenants defined!")
With this code, I am getting the error message, but after clicking OK, is going to the next page.使用此代码,我收到错误消息,但单击“确定”后,将转到下一页。 I would like that after clicking OK to return to the same page(Tenants) to fill that field.我希望在单击“确定”返回同一页面(租户)以填写该字段后。 How I can accomplish this?我怎么能做到这一点?
Found the way:找到了方法:
class Tenants(tk.Frame):
def __init__(self, master):
tk.Frame.__init__(self,master)
self.tenant_entries=[]
self.create_widgets(master)
def create_widgets(self,master):
label = tk.Label(self, text="Insert the name of the tenants")
start_button = tk.Button(self, text="Return to start page", command=lambda: master.switch_frame(StartPage))
new_tenant_button = tk.Button(self, text="Add tenant", command=self.add_tenant)
new_tenant_button.bind("<Return>", self.add_tenant)
new_tenant_button.grid(row=len(self.master.tenants), column=3, padx=4, pady=6, sticky="W")
next_button=tk.Button(self, text="Next", command=lambda:[master.switch_frame(Networks)] and self.tenants())
next_button.grid(row=1500, column=5,padx=4, pady=6, sticky="W")
label.pack(side="top", fill="x", pady=10)
start_button.pack()
new_tenant_button.pack()
next_button.pack()
for index, tenant in enumerate(self.master.tenants):
self.render_tenant_field(tenant, index)
def add_tenant(self):
self.master.tenants.append({'variable': tk.StringVar(self.master)})
self.master.switch_frame(Tenants)
def render_tenant_field(self, tenant, index):
entry_field = tk.Entry(self, textvariable=tenant['variable'])
entry_field.grid(row=index, column=0, columnspan=2, padx=4, pady=6, sticky="NEWS")
entry_field.pack()
self.tenant_entries.append(tenant['variable'])
def tenants(self):
with open("/home/dante/tenants.yml", "w") as f:
if self.tenant_entries:
f.write("--- #" + "\n")
f.write("clouds:" + "\n")
for ent in self.tenant_entries:
value=ent.get()
if value:
f.write(" "+value+":"+ "\n")
f.write(" username: admin"+"\n")
else:
tkMessageBox.showerror("tk", "No tenants defined!")
self.master.switch_frame(Tenants)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.