approx284 2022-11-13 11:19 采纳率: 100%
浏览 19
已结题

关于两段turtle代码拼接失败的问题,如何解决?

两段代码单独运行时不会报错,拼接就运行不了怎么回事
用代码块功能插入代码
#第一段
from PIL import Image

im = Image.open("2(2).jpg")
x, y = im.size
print(x, y)
 
import turtle
canvasX = x
canvasY = y
turtle.setup(x*1.2,y*1.2,600,300) 

def D(x, y):
    return x - canvasX // 2, - y + canvasY // 2
turtle.screensize(canvasX,canvasY, "black")
turtle.penup()
turtle.goto(D(0,0))
turtle.pendown()
turtle.pensize(1)
turtle.speed(0)
turtle.colormode(255)
turtle.delay(0)
turtle.tracer(x,0)
turtle.hideturtle()

for y in range(im.size[1]):
    turtle.penup()
    turtle.goto(D(0,y))
    turtle.pendown()
    for x in range(im.size[0]):
        pix = im.getpixel((x, y))
        turtle.pencolor(pix) 
        turtle.forward(1)
#第二段
turtle.pensize(5)
turtle.tracer(False)
r,g,b=255,255,255
for i in range(3):
    r, g, b=255-30*(i),255-30*(i),255-30*(i)
    turtle.pencolor(r/255,g/255, b/255)
    turtle.circle(1+3*i,360)
    turtle.penup()
    turtle.goto(0,-3*i)
    turtle.pendown()

```,请勿粘贴截图 

###### 图片成功绘制,圆点无法绘制

```python
TypeError                                 Traceback (most recent call last)
<ipython-input-1-e881053ab609> in <module>
     37 for i in range(3):
     38     r, g, b=255-30*(i),255-30*(i),255-30*(i)
---> 39     turtle.pencolor(r/255,g/255, b/255)
     40     turtle.circle(1+3*i,360)
     41     turtle.penup()

C:\ProgramData\Anaconda3\lib\turtle.py in pencolor(*args)

C:\ProgramData\Anaconda3\lib\turtle.py in pencolor(self, *args)
   2250         """
   2251         if args:
-> 2252             color = self._colorstr(args)
   2253             if color == self._pencolor:
   2254                 return

C:\ProgramData\Anaconda3\lib\turtle.py in _colorstr(self, args)
   2694 
   2695     def _colorstr(self, args):
-> 2696         return self.screen._colorstr(args)
   2697 
   2698     def _cc(self, args):

C:\ProgramData\Anaconda3\lib\turtle.py in _colorstr(self, color)
   1165         if not ((0 <= r <= 255) and (0 <= g <= 255) and (0 <= b <= 255)):
   1166             raise TurtleGraphicsError("bad color sequence: %s" % str(color))
-> 1167         return "#%02x%02x%02x" % (r, g, b)
   1168 
   1169     def _color(self, cstr):

TypeError: %x format: an integer is required, not float

我的解答思路和尝试过的方法

调整过不少次,不知道问题在哪

我想要达到的结果

图片基础上绘制圆点

  • 写回答

1条回答 默认 最新

  • chuifengde 2022-11-13 11:44
    关注
    pix = im.getpixel((x, y))
            turtle.pencolor(pix) 
            turtle.forward(1)
    这里的pix是带alpha通道的,所以pencolor(pix[:3])
    turtle.pencolor(r/255,g/255, b/255) 这里要整除,即turtle.pencolor(r//255,g//255, b//255)
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月21日
  • 已采纳回答 11月13日
  • 创建了问题 11月13日

悬赏问题

  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 linux驱动,linux应用,多线程