文章目录
- 案例介绍
- 准备工作
- 细节设计
- 如何做到使用两只小乌龟在同一画布的不同区域同时进行绘制?
- 如何做到让两个乌龟同时运动?
- 代码汇总
- 运行结果
- 后记
案例介绍
今天我们继续来看 Python 内置的 turtle 案例,这次的案例比较简单,主要是在大画布上建立了两个小画布,然后分别有两个小乌龟一起画画。
准备工作
无需安装额外的库,只需要在 Python 内置的 idle 中找到对应的 turtle 样例即可。
细节设计
如何做到使用两只小乌龟在同一画布的不同区域同时进行绘制?
核心在于下面的代码。
cv1 = TK.Canvas(root, width=300, height=200, bg="#ddffff") # 创建画布
s1 = TurtleScreen(cv1) # 将 turtle 运动区域和画布绑定
p = RawTurtle(s1) # 将 turtle 和 运动区域绑定
如何做到让两个乌龟同时运动?
核心在于下面的代码,其中 p 和 q 分别表示了两只小乌龟,二者构成了一个可迭代对象的形式,由循环进行管理二者的动作行为。
for i in range(5):
for t in p, q:
t.fd(50) # 前进
t.lt(72)
代码汇总
"""turtledemo.two_canvases
Use TurtleScreen and RawTurtle to draw on two
distinct canvases in a separate windows. The
new window must be separately closed in
addition to pressing the STOP button.
"""
from turtle import TurtleScreen, RawTurtle, TK
def main():
root = TK.Tk()
cv1 = TK.Canvas(root, width=300, height=200, bg="#ddffff")
cv2 = TK.Canvas(root, width=300, height=200, bg="#ffeeee")
cv1.pack()
cv2.pack()
s1 = TurtleScreen(cv1)
s1.bgcolor(0.85, 0.85, 1)
s2 = TurtleScreen(cv2)
s2.bgcolor(1, 0.85, 0.85)
p = RawTurtle(s1)
q = RawTurtle(s2)
p.color("red", (1, 0.85, 0.85))
p.width(3)
q.color("blue", (0.85, 0.85, 1))
q.width(3)
for t in p,q:
t.shape("turtle")
t.lt(36) # 左转 angle=36 个单位
q.lt(180)
for t in p, q:
t.begin_fill()
for i in range(5):
for t in p, q:
t.fd(50) # 前进
t.lt(72)
for t in p,q:
t.end_fill()
t.lt(54)
t.pu() # 抬起画笔
t.bk(50) # 向后
return "EVENTLOOP"
if __name__ == '__main__':
main()
TK.mainloop() # keep window open until user closes it
运行结果
后记
以上就是我们今天的内容,下期我们将再学习别的有趣的 turtle 案例。