我想要输入一个'输入姓名'向用户输出欢迎消息的条目。我最近发布了如何在tkinter中切换帧的求助。我弄明白并解决了这个问题。
但是,现在我想切换框架和在按下按钮时将条目打印到标签。我的代码中没有收到任何错误,但returnEntry()
函数没有做任何事情。它没有提高框架,我也不认为它会检索条目文本。(没有returnEntry()
功能框架 提升框架,但是代码它没有。这有意义还是让事情变得复杂?
以下是代码:
def show_frame(frame):
frame.tkraise()
def returnEntry():
result=NameEntry.get()
Label3.config(text=result)
def WelcomeName():
show_frame(f3)
returnEntry()
f1 = Frame(root)
f2 = Frame(root)
f3 = Frame(root)
f4 = Frame(root)
for frame in (f1, f2, f3, f4):
frame.config(width=500,height=500, bg="light blue")
frame.place(relx=0.5,rely=0.5,anchor="center")
#First Page
Button(f1, text='Click to Play', command=lambda: show_frame(f2)).place(relx=0.5,rely=0.5,anchor="center")
Label(f1, text='Magic 8 Ball', fg="White", bg="dark blue",
font="Veranda 19").place(relx=0.5,rely=0.20,anchor="center")
#Second page
Label(f2, text='Enter your name:',fg="White", bg="dark blue",
font="veranda 17").place(relx=0.5,rely=0.40,anchor="center")
NameEntry=Entry(f2,font="veranda 15").place(relx=0.5,rely=0.5,anchor="center")
Button2=Button(f2, text='Continue', font="veranda 15",
command=lambda: returnEntry).place(relx=0.5,rely=0.60,anchor="center")
#Third Page
Label3=Label(f3,text="",bg="light blue",font="veranda 15").place(relx=0.5,rely=0.35,anchor="center")
Label4=Label(f3, text="Ask me a yes or no question and reveal the truth" , bg="light blue",font="veranda 15")
Label4.place(relx=0.5,rely=0.45,anchor="center")
QuestionEntry=Entry(f3, font="veranda 15").place(relx=0.5,rely=0.52,anchor="center")
Button(f3, text='Ask away', command=lambda: show_frame(f4)).place(relx=0.5,rely=0.6,anchor="center")
对于草率代码等抱歉...
答案 0 :(得分:2)
你做不到。您将必须创建一个第三个函数来调用您想要的两个函数,并将第三个函数赋予Button命令。
def on_click():
do_thing_1()
do_thing_2()
btn = Button(command=on_click)
我强烈建议您远离lambda
,直到您知道它是如何工作的。
此外,您不应该在同一行上初始化和布局小部件,这会导致错误。总是使用2行。
# BAD: NameEntry is None, and can't be used
NameEntry=Entry(f2,font="veranda 15").place(relx=0.5,rely=0.5,anchor="center")
# good: NameEntry is an Entry instance, and can be used later
NameEntry=Entry(f2,font="veranda 15")
NameEntry.place(relx=0.5,rely=0.5,anchor="center")