在 Tkinter 中打开后续 windows
Open subsequent windows in Tkinter
我希望我的代码在用户将字符串输入到 Entry
框中后使用 Tkinter
打开一个新的 window。
#First Window, Start or Information
def start():
q1 = tkinter.Tk()
q1.title("Sports")
q1.geometry("500x170")
q1.configure(bg='#00BFFF')
event1 = tkinter.Label(q1, text="What Sports Event Did You Participate In? \n 1) Football \n 2) Hockey \n 3) Basketball \n 4) Badminton \n 5) Rounders", fg="#383A39", bg="#00BFFF", font=("Helvetica", 15))
event1.pack()
ans = tkinter.Entry(q1, width=80)
ans.pack()
def qu1():
deranswer = ans.get()
if deranswer == "football" or deranswer == "Football" or deranswer == "1":
crr = tkinter.Label(q1, text="Thank You!", fg="green")
crr.pack()
team = tkinter.Tk()
team.title("Team/Individual?")
team.geometry("500x500")
team.configure(bg='#00BFFF')
event2 = tkinter.Label(team, text="Would You Like To Enter As A Team or Individual?", fg="#383A39", bg="#00BFFF")
event2.pack()
ans2 = tkinter.Entry(team, width=80)
ans2.pack()
def qu2():
deranswer = ans2.get()
if deranswer == "Team" or deranswer == "1":
total_score = 0
wins = 0
losses = 0
draws = 0
q3 = tkinter.Tk()
q3.title("Team Score")
q3 = tkinter.Label(window, text="Please Enter Your Team Name", fg="#383A39", bg="#00BFFFF")
ans3 = tkinter.Entry(q3, width=80)
ans3.pack()
我怎样才能使这个工作?
你永远不会调用下一个函数来工作。在您让用户输入他们想要的运动后,函数 qu1
不会被调用,因此不会对 运行 进行额外的代码。您可以通过创建一个按钮来纠正此问题,该按钮 运行 是下一段代码。例如:
ans = tkinter.Entry(q1, width=80)
confirm = tkinter.Button(q1, width=10, text="Confirm", command=lambda: qu1())
ans.pack()
confirm.pack()
当用户输入后,他们必须单击下一个子例程的确认按钮 运行。
祝你好运!
一开始有点提示:特别是初学者,请把完整的代码传过来。问题可能出在任何地方,从失败的主循环到错误的事件处理程序。
我没有看到您将 qu1() 绑定到按钮单击或输入字段中的 Enter 按键的行。 qu1() 根本不会被执行。
您可以像这样添加一个按钮:Button(q1, text='Submit',command=qu1).pack()
创建一个按钮或 ans.bind('<Key-Return>', qu1)
为条目绑定回车键事件。但是你必须用 def qu1(event=None)
替换 def qu1()
因为点击事件信息可能会发送到函数 qu1.
另外请不要使用嵌套的 def
s。这是一种糟糕的风格。您可以在主代码中创建它们。否则我建议你阅读 python 类.
最后但同样重要的是,我的建议是看一下 tkinter 消息框。出于您的目的,与您的示例代码相比,他们让您更容易甚至 "beautiful" 询问用户。 (如果我们可以称那些 windows 美丽的话)。
我希望我的代码在用户将字符串输入到 Entry
框中后使用 Tkinter
打开一个新的 window。
#First Window, Start or Information
def start():
q1 = tkinter.Tk()
q1.title("Sports")
q1.geometry("500x170")
q1.configure(bg='#00BFFF')
event1 = tkinter.Label(q1, text="What Sports Event Did You Participate In? \n 1) Football \n 2) Hockey \n 3) Basketball \n 4) Badminton \n 5) Rounders", fg="#383A39", bg="#00BFFF", font=("Helvetica", 15))
event1.pack()
ans = tkinter.Entry(q1, width=80)
ans.pack()
def qu1():
deranswer = ans.get()
if deranswer == "football" or deranswer == "Football" or deranswer == "1":
crr = tkinter.Label(q1, text="Thank You!", fg="green")
crr.pack()
team = tkinter.Tk()
team.title("Team/Individual?")
team.geometry("500x500")
team.configure(bg='#00BFFF')
event2 = tkinter.Label(team, text="Would You Like To Enter As A Team or Individual?", fg="#383A39", bg="#00BFFF")
event2.pack()
ans2 = tkinter.Entry(team, width=80)
ans2.pack()
def qu2():
deranswer = ans2.get()
if deranswer == "Team" or deranswer == "1":
total_score = 0
wins = 0
losses = 0
draws = 0
q3 = tkinter.Tk()
q3.title("Team Score")
q3 = tkinter.Label(window, text="Please Enter Your Team Name", fg="#383A39", bg="#00BFFFF")
ans3 = tkinter.Entry(q3, width=80)
ans3.pack()
我怎样才能使这个工作?
你永远不会调用下一个函数来工作。在您让用户输入他们想要的运动后,函数 qu1
不会被调用,因此不会对 运行 进行额外的代码。您可以通过创建一个按钮来纠正此问题,该按钮 运行 是下一段代码。例如:
ans = tkinter.Entry(q1, width=80)
confirm = tkinter.Button(q1, width=10, text="Confirm", command=lambda: qu1())
ans.pack()
confirm.pack()
当用户输入后,他们必须单击下一个子例程的确认按钮 运行。
祝你好运!
一开始有点提示:特别是初学者,请把完整的代码传过来。问题可能出在任何地方,从失败的主循环到错误的事件处理程序。
我没有看到您将 qu1() 绑定到按钮单击或输入字段中的 Enter 按键的行。 qu1() 根本不会被执行。
您可以像这样添加一个按钮:Button(q1, text='Submit',command=qu1).pack()
创建一个按钮或 ans.bind('<Key-Return>', qu1)
为条目绑定回车键事件。但是你必须用 def qu1(event=None)
替换 def qu1()
因为点击事件信息可能会发送到函数 qu1.
另外请不要使用嵌套的 def
s。这是一种糟糕的风格。您可以在主代码中创建它们。否则我建议你阅读 python 类.
最后但同样重要的是,我的建议是看一下 tkinter 消息框。出于您的目的,与您的示例代码相比,他们让您更容易甚至 "beautiful" 询问用户。 (如果我们可以称那些 windows 美丽的话)。