我正在用Python龟画叙利亚国旗。我现在遗漏了两颗绿色星星,因为它们需要一个外部依赖(哦哇,这对于一个偶然的政治双关语来说是怎么回事)。这是代码:
from turtle import *
# Set up the drawing environment
length = 600
height = 400
setup(length, height)
setworldcoordinates(0,0,length,height)
goto(0,0)
colours = ["red","black","white","Darkgreen"]
bgcolor(colours[0])
speed('fastest')
## Black Stripe ##
pencolor(colours[1])
pendown()
fillcolor(colours[1])
begin_fill()
goto(length,0)
goto(length,height/3)
goto(0,height/3)
goto(0,0)
end_fill()
penup()
# White Stripe
goto(0,height/3)
pencolor(colours[2])
pendown()
fillcolor(colours[2])
begin_fill()
goto(length,height/3)
goto(length,(height/3)*2)
goto(0,(height/3)*2)
goto(0,height/3)
end_fill()
penup()
ht()
done()
为什么图像周围有红色边框?我已将画布大小和坐标系设置为彼此相等,以使1个像素等于1个像素。例如,黑盒子应该从画布的左下角开始,就像我告诉它的那样,但是它代替了红色边框。如果在运行代码后手动调整窗口大小,无论您尝试重叠红色边框的小小,都会有一个红色边框。我甚至没有在代码中写入边框。
我认为它可能与Python龟的内脏有关,它只是允许一个小边框,以便看到坐标(0,0)上的内容,但我找不到任何实际的文档显示了乌龟是如何工作的,它们只是说“setup(x,y)=设置画布大小”或bgcolor(“在这里输入颜色”),并且不解释组成这些函数的任何定义。
有谁知道如何:
干杯!
(编辑:顺便说一句,screensize(length,height)
为我提供了红色边框和滚动条。)
答案 0 :(得分:0)
不确定是否可以更改它,除非我从头开始创建tk窗口 首先就没有使用乌龟的目的。
您可以使用tkinter创建窗口结构,然后在其中嵌入乌龟画布。下面是以此方式完成程序的示例,您可以在其中的ScrolledCanvas
和tkiner的普通“ Canvas”之间切换以查看区别:
import tkinter as tk
from turtle import TurtleScreen, RawTurtle, ScrolledCanvas
WIDTH, HEIGHT = 640, 480
root = tk.Tk()
canvas = tk.Canvas(root, width=WIDTH, height=HEIGHT)
# canvas = ScrolledCanvas(root, width=WIDTH, height=HEIGHT)
canvas.pack()
screen = TurtleScreen(canvas)
screen.setworldcoordinates(0, 0, WIDTH, HEIGHT)
screen.bgcolor('red')
turtle = RawTurtle(screen, visible=False)
turtle.speed('fastest')
## Black Stripe ##
turtle.color('black')
turtle.begin_fill()
turtle.setx(WIDTH)
turtle.sety(HEIGHT / 3)
turtle.setx(0)
turtle.sety(0)
turtle.end_fill()
## White Stripe ##
turtle.penup()
turtle.sety(HEIGHT / 3)
turtle.pendown()
turtle.color('white')
turtle.begin_fill()
turtle.setx(WIDTH)
turtle.sety(2 * HEIGHT / 3)
turtle.setx(0)
turtle.sety(HEIGHT / 3)
turtle.end_fill()
screen.mainloop()
ScrolledCanvas
引入了更多的 chrome (边界和其他开销),这有时会以不希望的方式转移事物。这是一个垂直切片,显示了左侧的Canvas
和右侧的ScrolledCanvas
之间的区别:
随着将更多的chrome添加到窗口中,绘图区域会略微移动。尽管您在输出中看到的大量偏移量在您移动窗口时部分消失了,但这肯定是一个错误。