0
点赞
收藏
分享

微信扫一扫

【案例】什么?idle 中有内置 turtle 样例?(two_canvases)

彩虹_bd07 2022-06-21 阅读 93


文章目录

  • ​​案例介绍​​
  • ​​准备工作​​
  • ​​细节设计​​
  • ​​如何做到使用两只小乌龟在同一画布的不同区域同时进行绘制?​​
  • ​​如何做到让两个乌龟同时运动?​​
  • ​​代码汇总​​
  • ​​运行结果​​
  • ​​后记​​

案例介绍

今天我们继续来看 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

运行结果

【案例】什么?idle 中有内置 turtle 样例?(two_canvases)_迭代
【案例】什么?idle 中有内置 turtle 样例?(two_canvases)_迭代_02

后记

以上就是我们今天的内容,下期我们将再学习别的有趣的 turtle 案例。


举报

相关推荐

0 条评论