【发布时间】:2020-11-29 11:12:52
【问题描述】:
所以我有这段代码,它创建了一个类似于表单的用户填写 Tkinter 画布。在他们必须填写姓名的空间中,如果他们输入任何不是字母的内容,我希望我的代码在他们单击下一步按钮时显示错误消息。 这是一段相关的代码:
def check():
if not Name.isalpha():
messagebox.showerror('Only letters', 'Only letters are allowed!')
def Per_Form():
canvas.delete("all")
root.configure(bg="cornflower blue")
canvas.config(width=root.winfo_screenwidth(), height=root.winfo_screenheight(),
bg="cornflower blue") # to horizontally center the rectangle
form_title = canvas.create_rectangle(30, 20, 700, 75, fill="white", width=2)
canvas.move(form_title, 300, 30)
canvas.create_text(665, 70, text="Tell us more about you..")
FirstName = Label(canvas, text="First Name")
FirstName.configure(width=30, bg="white", fg="black", border=10)
FirstName = canvas.create_window(330, 130, anchor=NW, window=FirstName)
FName_Entry = Entry(canvas)
canvas.create_window(850, 145, window=FName_Entry, height=35, width=300)
Name = FName_Entry.get()
.
.
.
.
Next_button = Button(root, text="Next", anchor=CENTER, command=check)
Next_button.configure(width=10, bg="black", fg="blue", border=10)
Next_button = canvas.create_window(180, 200, anchor=NW, window=Next_button)
代码拒绝识别 Name 变量,因为它在 Per_Form 函数中。我该怎么办?
我已经尝试了几种变体,但它们都不起作用
编辑:
def check(Name):
if not Name.isalpha():
messagebox.showerror('Only letters', 'Only letters are allowed!')
else:
messagebox.showerror('Only letters', 'Perfect')
def Per_Form():
canvas.delete("all")
root.configure(bg="cornflower blue")
canvas.config(width=root.winfo_screenwidth(), height=root.winfo_screenheight(),
bg="cornflower blue") # to horizontally center the rectangle
form_title = canvas.create_rectangle(30, 20, 700, 75, fill="white", width=2)
canvas.move(form_title, 300, 30)
canvas.create_text(665, 70, text="Tell us more about you..")
FirstName = Label(canvas, text="First Name")
FirstName.configure(width=30, bg="white", fg="black", border=10)
FirstName = canvas.create_window(330, 130, anchor=NW, window=FirstName)
FName_Entry = Entry(canvas)
canvas.create_window(850, 145, window=FName_Entry, height=35, width=300)
Name = FName_Entry.get()
.
.
.
.
Next_button = Button(root, text="Next", anchor=CENTER, command=lambda: check(Name))
Next_button.configure(width=10, bg="black", fg="blue", border=10)
Next_button = canvas.create_window(180, 200, anchor=NW, window=Next_button)
【问题讨论】:
标签: python python-3.x button tkinter widget