我在这个网站上找到了一些有用的帖子,介绍如何使用 tkinter Canvas 对象中的
create_text()
方法让 Python 海龟编写旋转文本。海龟正在写我想要的东西,但它还在我真正想要的每个数字旁边写了一个附加数字,我找不到它在哪里这样做,以及如何防止它。如果有人能提供解释,我将不胜感激。我正在使用内置的 IDLE 编辑器。我的Python版本是3.10.7。
我已经编写了绘制量角器的代码。这是输出:
这是代码:
from turtle import *
c = getcanvas()
s = Screen()
s.setup(612, 328)
tracer(0)
t = Turtle()
t.hideturtle()
t.penup()
t.width(1.5)
def every_10(): # function called when ang%10 = 0
t.penup()
t.fd(36)
t.pendown()
t.fd(170) # length of long line from centre
t.penup()
t.fd(11) # move turtle out before writing first number
# create canvas text object with rotated text
angle_text = c.create_text(t.xcor(), -t.ycor(),
font=('Arial', 13, 'bold'),text=str(ang),
angle=(ang-90), anchor='center')
t.write(angle_text) # write rotated first number
t.fd(18) # move turtle out before writing second number
angle_text = c.create_text(t.xcor(), -t.ycor(),
font=('Arial', 13, 'bold'),text=str(180-ang),
angle=(ang-90), anchor='center')
t.write(angle_text) # write rotated second number
t.fd(14) # move turtle out before drawing final line
t.pendown()
t.fd(50) # length of final line
t.penup()
# move to starting position, draw small circle and horizontal and vertical lines
t.goto( 36, -138)
t.left(90)
t.pendown()
t.circle(36, 180)
t.goto(0, -138)
t.goto(0, -102)
t.goto(0, -138)
t.goto(36, -138)
t.penup()
# loop through angles from 0 to 180
for ang in range(181):
t.penup()
t.goto( 0, -138)
t.setheading(ang)
if ang % 10 == 0:
every_10()
elif ang % 5 == 0:
t.fd(261)
t.pendown()
t.fd(38)
else:
t.fd(276)
t.pendown()
t.fd(23)
update()
@jasonharper 提供的答案 - 请参阅评论。
c.create_text() 正在创建旋转文本,然后 t.write() 正在创建未旋转文本(包含刚刚创建的旋转文本的 ID 号)。
create_text()
创建并绘制文本项 - 无需使用任何其他代码来显示它。
tkinter 的文档指出该函数
create_text(*args, **kw)
绘制文字。返回项目 ID。
因此不需要的数字是每个旋转数字的项目 ID。