如何让海龟程序在 运行 之前等待来自用户的 event/response?
How can I make the turtle program wait for an event/response from user before running?
我正在尝试使用 tkinter 模块为我创建的迷你游戏获取投注输入。但是,每当我 运行 程序时,tkinter 和 turtle 模块都会 运行 同步。我怎样才能让 turtle 模块代码可以等到用户按下 tkinter 入口小部件中的按钮?
import random
import turtle
from tkinter import *
Bank_account = 0
def enter_input():
global turtle_bet
global bet_amount
turtle_bet = user_turtle_bet.get()
bet_amount = user_bet_amount.get()
return turtle_bet, bet_amount
## 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)
## Turtle Game Setup
turtle.screensize(canvwidth=500, canvheight=500, bg="pink")
t = turtle.Pen()
s = turtle.Pen()
t.forward(50)
s.left(90)
s.forward(50)
正如 Matiiss 所说,将 turtle 代码放在一个函数中,然后在用户交互时调用该函数。
顺便说一句,如果您要返回 turtle_bet 和 bet_amount 的值,我怀疑将它们声明为全局变量是不必要的。
import turtle
from tkinter import *
Bank_account = 0
def turtle_stuff():
## Turtle Game Setup
turtle.screensize(canvwidth=500, canvheight=500, bg="pink")
t = turtle.Pen()
s = turtle.Pen()
t.forward(50)
s.left(90)
s.forward(50)
def enter_input():
global turtle_bet # probably not necessary
global bet_amount # probably not necessary
turtle_bet = user_turtle_bet.get()
bet_amount = user_bet_amount.get()
turtle_stuff() # trigger the turtle code
return turtle_bet, bet_amount
## 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.mainloop()
我正在尝试使用 tkinter 模块为我创建的迷你游戏获取投注输入。但是,每当我 运行 程序时,tkinter 和 turtle 模块都会 运行 同步。我怎样才能让 turtle 模块代码可以等到用户按下 tkinter 入口小部件中的按钮?
import random
import turtle
from tkinter import *
Bank_account = 0
def enter_input():
global turtle_bet
global bet_amount
turtle_bet = user_turtle_bet.get()
bet_amount = user_bet_amount.get()
return turtle_bet, bet_amount
## 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)
## Turtle Game Setup
turtle.screensize(canvwidth=500, canvheight=500, bg="pink")
t = turtle.Pen()
s = turtle.Pen()
t.forward(50)
s.left(90)
s.forward(50)
正如 Matiiss 所说,将 turtle 代码放在一个函数中,然后在用户交互时调用该函数。 顺便说一句,如果您要返回 turtle_bet 和 bet_amount 的值,我怀疑将它们声明为全局变量是不必要的。
import turtle
from tkinter import *
Bank_account = 0
def turtle_stuff():
## Turtle Game Setup
turtle.screensize(canvwidth=500, canvheight=500, bg="pink")
t = turtle.Pen()
s = turtle.Pen()
t.forward(50)
s.left(90)
s.forward(50)
def enter_input():
global turtle_bet # probably not necessary
global bet_amount # probably not necessary
turtle_bet = user_turtle_bet.get()
bet_amount = user_bet_amount.get()
turtle_stuff() # trigger the turtle code
return turtle_bet, bet_amount
## 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.mainloop()