python turtle画布_阅读Turtle库源码(二) | 如何在turtle绘图窗口中添加多画布!...

今天继续带领大家阅读海龟库源码。今天来

介绍一下如何在turtle绘图窗口中添加任意多的画布。

要学会如何在turtle绘图窗口中添加画布,我们要先来了解turtle模块中的重要类_Root.

class _Root(TK.Tk):

"""Root class for Screen based on Tkinter."""

def __init__(self):

TK.Tk.__init__(self)

def setupcanvas(self, width, height, cwidth, cheight):

self._canvas = ScrolledCanvas(self, width, height, cwidth, cheight)

self._canvas.pack(expand=1, fill="both")

def _getcanvas(self):

return self._canvas

def set_geometry(self, width, height, startx, starty):

self.geometry("%dx%d%+d%+d"%(width, height, startx, starty))

def ondestroy(self, destroy):

self.wm_protocol("WM_DELETE_WINDOW", destroy)

def win_width(self):

return self.winfo_screenwidth()

def win_height(self):

return self.winfo_screenheight()

该类继承于tkinter库的TK类,它代表的是turtle绘图的根窗口,当我们运行以下代码。

import turtle

r = turtle._Root()

r.mainloop()

就会弹出一个tk窗口。

海龟绘图根窗口--tk窗口

目前我们的窗口上空空如也,啥都没有?要让海龟绘图首先应该有画布,所以,接下来,我们现在上面放置一个画布。

import turtle

r = turtle._Root()

r.setupcanvas(800,800,600,600)

r.mainloop()

这样就会在tk窗口中添加一个高600,宽600的画布。

海龟绘图根窗口--带画布

接下来,我们在此窗口中再添加一个画布。

import turtle

r = turtle._Root()

r.set_geometry(800,800,0,0)

# 放第一个画布

cv2 = turtle.ScrolledCanvas(r)

cv2.pack(expand = True, fill = tk.BOTH)

cv2.reset(400, 400)

t1 = turtle.RawPen(cv2)

t1.shape('turtle')

t1.screen.bgcolor('pink')

# 放第二个画布

cv3 = turtle.ScrolledCanvas(r)

cv3.pack(expand = True, fill = tk.BOTH)

cv3.reset(400, 400)

t2 = turtle.RawPen(cv3)

t2.shape('turtle')

t2.screen.bgcolor('gray')

r.mainloop()

于是,窗口中就出现了两个背景颜色不同的画布。同样的道理,你可以向绘图窗口中添加任意多的画布。

海龟绘图根窗口--带两个画布

引入了两个线程后,可以让海龟协同工作,绘制图形。

import turtle

r = turtle._Root()

r.set_geometry(800, 800, 0, 0)

cv2 = turtle.ScrolledCanvas(r)

cv2.pack(expand=True, fill=tk.BOTH)

t1 = turtle.RawPen(cv2)

t1.shape('turtle')

t1.screen.bgcolor('pink')

# 放第二个画布

cv3 = turtle.ScrolledCanvas(r)

cv3.pack(expand=True, fill=tk.BOTH)

t2 = turtle.RawPen(cv3)

t2.shape('turtle')

t2.screen.bgcolor('gray')

th1 = Thread(target = draw_spiral_loop, args = (t1, 1))

th2 = Thread(target=draw_spiral_loop1, args=(t2, 2))

th1.start()

th2.start()

r.mainloop()

我们一起来看一下启动后的效果吧!

总结一下,本篇文章中,我们介绍了如何在turtle绘图窗口中添加多个画布Canvas,那么,对于tkinter的其他组件例如:按钮、标签、下拉列表、单选框与复选框等等该如何添加至

turtle绘图窗口呢?我们下一篇文章继续聊!再会!

由于篇幅所限,本篇文章中的完整代码并未全部公布,若要索取完整程序代码,畅谈合作与Python技术交流、咨询“在线课程”,请扫描以下二维码,进群后与我们联系!

最后打个广告

。我们 "Python青少年编程班" 计划近期新开一期在线学习班,从零基础讲起,基础部分预计40次课授完,课程采用直播授课的方式,每节课授课时间1个半小时,费用优惠,具体学习内容如下:

若您有意参加,请扫描以上二维码与我们联系。

-end-

Python 青少年编程

编程班学生作品展示系列:

Python数据教学案例与公益课:

Python微课堂系列:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值