海龟书写旋转文本,但写入附加文本

问题描述 投票:0回答:1

我在这个网站上找到了一些有用的帖子,介绍如何使用 tkinter Canvas 对象中的

create_text()
方法让 Python 海龟编写旋转文本。海龟正在写我想要的东西,但它还在我真正想要的每个数字旁边写了一个附加数字,我找不到它在哪里这样做,以及如何防止它。如果有人能提供解释,我将不胜感激。我正在使用内置的 IDLE 编辑器。我的Python版本是3.10.7。

我已经编写了绘制量角器的代码。这是输出:

enter image description here

这是代码:

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()
python tkinter python-turtle
1个回答
0
投票

@jasonharper 提供的答案 - 请参阅评论。

c.create_text() 正在创建旋转文本,然后 t.write() 正在创建未旋转文本(包含刚刚创建的旋转文本的 ID 号)。

create_text()
创建并绘制文本项 - 无需使用任何其他代码来显示它。

tkinter 的文档指出该函数

create_text(*args, **kw)

绘制文字。返回项目 ID。

因此不需要的数字是每个旋转数字的项目 ID。

© www.soinside.com 2019 - 2024. All rights reserved.