尝试获取用户输入并制作一个海龟点
Trying to take user input and make a turtle dot
在这种情况下尝试获取用户输入的数字,并让乌龟用我们从用户输入中获得的数字画一个点。这是我正在尝试做的一个学校项目,我试图找到他们真的没有帮助的 YouTube 视频。
from tkinter import *
import tkinter
import turtle
wn = turtle.Screen()
wn.bgcolor('black')
player = turtle.Turtle()
player.shape('turtle')
player.color('white')
def sad():
player.dot(str(kj.get()))
top = tkinter.Tk()
top.geometry('600x600')
kj = Entry(top, bd =5)
kj.pack()
B = tkinter.Button(top, text ="Hello", command = sad)
B.pack()
wn.mainloop()
top.mainloop()
对于 turtle,您可以使用 setPos 命令告诉它去到一个位置。如果你只是将用户输入的值转换成坐标,告诉你乌龟去那里然后开始绘图。
这是一个解决方案:
import turtle
from time import sleep
from tkinter import *
#Setup
root=Tk()
wn = turtle.Screen()
wn.bgcolor('black')
player = turtle.Turtle()
player.shape('turtle')
player.color('white')
def goToLocation(coords):
#Get user input and split it into two different coordinants (coordsx and coordsy)
coordsx, coordsy = coords.split(" ")
#Set turtles position to the coords specified
player.hideturtle()
player.penup()
player.setpos(int(coordsx),int(coordsy))
#Draw the circle of size
player.pensize(50)
player.showturtle()
player.pendown()
player.forward(1)
sleep(5)
#Button clicked handler
def retrieve_input():
inputValue=textBox.get("1.0","end-1c")
print(inputValue)
#Calls the previous function
goToLocation(inputValue)
#Input box setup
textBox=Text(root, height=2, width=10)
textBox.pack()
buttonCommit=Button(root, height=1, width=10, text="Commit",
command=lambda: retrieve_input())
#command=lambda: retrieve_input() >>> just means do this when i press the button
buttonCommit.pack()
mainloop()
将Python turtle 与tkinter 结合使用时,需要使用embedded turtle 方法,而不是你使用的独立方法。由于 turtle 是在 tkinter 之上构建的,您实际上已经创建了两个根并且最终 运行 会遇到麻烦。 (例如,图像可能不适合您。)当您同时调用 top.mainloop()
和 wn.mainloop()
!
时,您显然对组合感到困惑
下面是如何在您的程序的 tkinter 中嵌入 turtle 的示例:
import tkinter as tk
from turtle import TurtleScreen, RawTurtle
def set_position():
player.setposition(x_entry.get(), y_entry.get())
player.dot(30, 'blue')
player.home()
top = tk.Tk()
canvas = tk.Canvas(top, width=600, height=600)
canvas.pack()
screen = TurtleScreen(canvas)
screen.bgcolor('black')
player = RawTurtle(screen)
player.shape('turtle')
player.color('red', 'white')
player.penup()
x_entry = tk.DoubleVar()
tk.Label(top, text="X: ").pack(side=tk.LEFT)
tk.Entry(top, textvariable=x_entry).pack(side=tk.LEFT)
y_entry = tk.DoubleVar()
tk.Label(top, text="Y: ").pack(side=tk.LEFT)
tk.Entry(top, textvariable=y_entry).pack(side=tk.LEFT)
tk.Button(top, text="Draw Dot!", command=set_position).pack()
screen.mainloop()
我的建议是:首先,如果可以的话,尝试完全在 standalone turtle 中工作,除非确实需要,否则不要引入 tkinter;其次,不要相信任何在 tkinter 环境中尝试使用 standalone turtle 类 embedded 时犯同样错误的答案。
在这种情况下尝试获取用户输入的数字,并让乌龟用我们从用户输入中获得的数字画一个点。这是我正在尝试做的一个学校项目,我试图找到他们真的没有帮助的 YouTube 视频。
from tkinter import *
import tkinter
import turtle
wn = turtle.Screen()
wn.bgcolor('black')
player = turtle.Turtle()
player.shape('turtle')
player.color('white')
def sad():
player.dot(str(kj.get()))
top = tkinter.Tk()
top.geometry('600x600')
kj = Entry(top, bd =5)
kj.pack()
B = tkinter.Button(top, text ="Hello", command = sad)
B.pack()
wn.mainloop()
top.mainloop()
对于 turtle,您可以使用 setPos 命令告诉它去到一个位置。如果你只是将用户输入的值转换成坐标,告诉你乌龟去那里然后开始绘图。
这是一个解决方案:
import turtle
from time import sleep
from tkinter import *
#Setup
root=Tk()
wn = turtle.Screen()
wn.bgcolor('black')
player = turtle.Turtle()
player.shape('turtle')
player.color('white')
def goToLocation(coords):
#Get user input and split it into two different coordinants (coordsx and coordsy)
coordsx, coordsy = coords.split(" ")
#Set turtles position to the coords specified
player.hideturtle()
player.penup()
player.setpos(int(coordsx),int(coordsy))
#Draw the circle of size
player.pensize(50)
player.showturtle()
player.pendown()
player.forward(1)
sleep(5)
#Button clicked handler
def retrieve_input():
inputValue=textBox.get("1.0","end-1c")
print(inputValue)
#Calls the previous function
goToLocation(inputValue)
#Input box setup
textBox=Text(root, height=2, width=10)
textBox.pack()
buttonCommit=Button(root, height=1, width=10, text="Commit",
command=lambda: retrieve_input())
#command=lambda: retrieve_input() >>> just means do this when i press the button
buttonCommit.pack()
mainloop()
将Python turtle 与tkinter 结合使用时,需要使用embedded turtle 方法,而不是你使用的独立方法。由于 turtle 是在 tkinter 之上构建的,您实际上已经创建了两个根并且最终 运行 会遇到麻烦。 (例如,图像可能不适合您。)当您同时调用 top.mainloop()
和 wn.mainloop()
!
下面是如何在您的程序的 tkinter 中嵌入 turtle 的示例:
import tkinter as tk
from turtle import TurtleScreen, RawTurtle
def set_position():
player.setposition(x_entry.get(), y_entry.get())
player.dot(30, 'blue')
player.home()
top = tk.Tk()
canvas = tk.Canvas(top, width=600, height=600)
canvas.pack()
screen = TurtleScreen(canvas)
screen.bgcolor('black')
player = RawTurtle(screen)
player.shape('turtle')
player.color('red', 'white')
player.penup()
x_entry = tk.DoubleVar()
tk.Label(top, text="X: ").pack(side=tk.LEFT)
tk.Entry(top, textvariable=x_entry).pack(side=tk.LEFT)
y_entry = tk.DoubleVar()
tk.Label(top, text="Y: ").pack(side=tk.LEFT)
tk.Entry(top, textvariable=y_entry).pack(side=tk.LEFT)
tk.Button(top, text="Draw Dot!", command=set_position).pack()
screen.mainloop()
我的建议是:首先,如果可以的话,尝试完全在 standalone turtle 中工作,除非确实需要,否则不要引入 tkinter;其次,不要相信任何在 tkinter 环境中尝试使用 standalone turtle 类 embedded 时犯同样错误的答案。