【问题标题】:How can I make the turtle program wait for an event/response from user before running?如何让海龟程序在运行前等待用户的事件/响应?
【发布时间】:2021-08-28 14:56:52
【问题描述】:

我正在尝试使用 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)

【问题讨论】:

  • 将海龟的东西放在一个函数中并在用户事件中调用该函数,你也应该在你的tkinter部分代码的末尾使用.mainloop():tk.mainloop()

标签: python tkinter turtle-graphics


【解决方案1】:

正如 Matiiss 所说,将海龟代码放在一个函数中,然后在用户交互时调用该函数。 顺便说一句,如果您要返回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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-23
    • 1970-01-01
    • 2020-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多