我在用Python海龟画叙利亚国旗。我暂时忽略了这两颗绿色的星星,因为它们需要外在的依赖(哦,哇,对于一个偶然的政治双关语来说,这是怎么回事?)( lol)下面是代码:
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()
为什么图像周围有红色边框?我已经将画布大小和坐标系设置为相等,这样一个像素等于一个像素。例如,黑匣子应该像我告诉它的那样,从画布的左下角开始,但它的位置却是红色的边框。如果在运行代码后手动调整窗口的大小,则无论您在尝试重叠红色边框时使其变得多么小,始终都会出现红色边框。我甚至都没把边框写进代码里。
我认为这可能与Python海龟的内部有关,它只允许一个小边框,以查看坐标(0,0)上的内容,但我找不到任何文档来显示海龟的工作原理,它们都只是说了一些东西,比如"setup(x,y) = set画布大小“或bgcolor(”在这里输入颜色“),并且没有解释构成函数的任何定义。
有没有人知道如何:
干杯!
(编辑:顺便说一下,screensize(length,height)
给了我红色边框和滚动条。)
发布于 2018-11-23 23:48:09
不确定我是否能改变它,除非我从头做了一个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
引入了更多的铬(边框和其他开销),这改变了周围的事物,有时是以不受欢迎的方式。下面是一个垂直切片,显示左侧的普通Canvas
和右侧的ScrolledCanvas
之间的差异:
随着更多的铬被添加到窗口,绘图区域稍微移动。尽管在您的输出中看到的大量偏移量在移动窗口时会部分消失,但这显然是一个错误。
https://stackoverflow.com/questions/36029529
复制