如何让turtle程序等待用户触发tkinter按钮输入事件后再运行?
解决方案
核心原理
当前代码的turtle初始化、绘图逻辑属于全局代码,程序启动后会按顺序直接执行,不会等待交互事件触发。只需要将turtle相关的游戏逻辑封装为独立函数,绑定到确认按钮的点击回调中即可实现等待用户输入后再运行的效果。
修改后完整代码
import random import turtle from tkinter import * Bank_account = 0 def start_turtle_game(): # 所有turtle相关逻辑都放到这个函数里 turtle.screensize(canvwidth=500, canvheight=500, bg="pink") t = turtle.Pen() s = turtle.Pen() t.forward(50) s.left(90) s.forward(50) # 后续的游戏逻辑可以继续在这里补充 turtle.done() # 保持turtle窗口不闪退 def enter_input(): global turtle_bet global bet_amount turtle_bet = user_turtle_bet.get() bet_amount = user_bet_amount.get() # 拿到用户输入后启动turtle游戏 start_turtle_game() # 如果需要点击确认后关闭输入窗口,取消下一行注释即可 # tk.destroy() ## Tkinter Entry Setup tk = Tk() user_turtle_bet = StringVar() user_bet_amount = StringVar() user_turtle_label = Label(tk, text="Turtle Bet", font=('Times', 13, 'bold')) user_turtle_entry = Entry(tk, textvariable=user_turtle_bet, font=('Times', 13, 'normal')) user_amount_label = Label(tk, text="Bet Amount", font=('Times', 13, 'bold')) user_amount_entry = Entry(tk, textvariable=user_bet_amount, font=('Times', 13, 'normal')) enter_button = Button(tk, text="ENTER", command=enter_input) user_turtle_label.grid(row=0, column=0) user_turtle_entry.grid(row=0, column=1) user_amount_label.grid(row=1, column=0) user_amount_entry.grid(row=1, column=1) enter_button.grid(row=2, column=1) # 启动tk主循环,保持窗口正常运行 tk.mainloop()
补充说明
- 代码末尾添加的
tk.mainloop()是tkinter窗口正常运行的必需代码,缺少会导致窗口启动后直接闪退 turtle.done()用于保持turtle绘图窗口正常响应,避免运行完绘图逻辑后直接关闭
内容的提问来源于stack exchange,提问作者5kepT1cal
相关产品推荐
相关产品推荐

