Python 让小海龟互动起来——turtle和tkinter混合使用

简介: Python 让小海龟互动起来——turtle和tkinter混合使用

Turtle 窗口


请看下图,turtle窗口图标是一片小叶子,估计它就是继承自 tkinter 库。

ab4a55d96cdc43fbac3ffa04f62e7c63.png




tkinter 窗口


参阅了一些资料,发现 turtle 方法可直接在 tkinter 的画布Canvas上操作:

 

9b917c8e97924d3c9a82b5436378dca1.gif



源代码


from tkinter import *
from turtle import RawTurtle
def circ():
    tu.penup()
    tu.home()
    tu.clear()
    tu.speed(0)
    [x,y,R] = et1.get().split(',')
    try:
        x = int(x.replace('(',''))
        y = int(y.replace(')',''))
        R = int(R.strip())
    except:
        x,y,R = 0,0,50  #输入错误则赋予默认值
    tu.goto(x,y-R)
    tu.pendown()
    tu.circle(R)
def rect():
    tu.penup()
    tu.home()
    tu.clear()
    tu.speed(0)
    tu.color('red', 'yellow')
    tu.begin_fill()
    [d,rad] = et2.get().split(',')
    try:
        d = int(d)
        rad = int(rad)
    except:
        d,rad = 200,216  #输入错误则赋予默认值
    tu.pendown()
    tu.back(d//5)
    while True:
        tu.forward(d)
        tu.left(rad)
        if abs(tu.pos()[0]+d//5)<0.1 and abs(tu.pos()[1])<0.1:
            break
    tu.end_fill()
def taiji():
    tu.penup()
    tu.home()
    tu.clear()
    tu.speed(0)
    d = et3.get()
    try:
        d = int(d)
    except:
        d = 120  #输入错误则赋予默认值
    tu.hideturtle()
    tu.goto(d//2,-d)
    tu.pendown()
    tu.begin_fill()
    tu.color('black','black')
    tu.circle(d,extent=180)
    tu.circle(d//2,extent=180)
    tu.circle(-d//2,extent=180)
    tu.end_fill()
    tu.circle(-d,extent=180)
    tu.penup()
    tu.goto(d//2,-d//6*4)
    tu.pendown()
    tu.begin_fill()
    tu.fillcolor("black")
    tu.circle(d//5,extent=360)
    tu.end_fill()
    tu.penup()
    tu.goto(d//2,d//3)
    tu.pendown()
    tu.begin_fill()
    tu.fillcolor("white")
    tu.circle(d//5,extent=360)
    tu.end_fill()
    tu.penup()
def main():
    global tu,et1,et2,et3
    root = Tk()
    root.geometry('520x520+150+300')
    root.title('turtle在tkinter.Canvas上的操作')
    root.resizable(False, False)
    canvas = Canvas(root, width=640, height=400)
    canvas.pack()
    tu = RawTurtle(canvas)
    tu.hideturtle()
    et1 = Entry(root, width=12)
    et1.place(x = 30, y = 480)
    et1.insert(0,'(50,-20), 100')
    bt1 = Button(root,text=' 画圆 ',command=circ)
    bt1.place(x = 60, y = 425)
    et2 = Entry(root, width=12)
    et2.place(x = 190, y = 480)
    et2.insert(0,'200, 216')
    bt2 = Button(root,text=' 多角星(或多边形) ',command=rect)
    bt2.place(x = 180, y = 425)
    et3 = Entry(root, width=12)
    et3.place(x = 360, y = 480)
    et3.insert(0,'120')
    bt3 = Button(root,text=' 太极 ',command=taiji)
    bt3.place(x = 380, y = 425)
    root.mainloop()
if __name__ == '__main__':
    main()




turtle和tkinter混合使用


turtle和tkinter两者搭配使用,使得 turtle 的画图参数可以由 tkinter 的控件当场设置,这样就实现了turtle小海龟的现场互动,运行效果见图二。


三个Entry控件,分别设置:


  1. 圆心坐标和圆的直径;

  2. 多边形的边长和边的转动角度;

  3. 太极图的外圆直径。

(本篇完)



基础知识


python turtle库


是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。



画布


画布就是turtle展开用于绘图区域,可以设置它的大小和初始位置。


设置画布大小

turtle.screensize(canvwidth=None,canvheight=None,bg=None),参数分别为画布的宽(单位像素),高,背景颜色。


如:turtle.screensize(800,600,"green")

turtle.screensize()#返回默认大小(400,300)

turtle.setup(width=0.5,height=0.75,startx=None,starty=None),参数:width,height:输入宽和高为整数时,表示像素;为小数时,表示占据电脑屏幕的比例,(startx,starty):这一坐标表示矩形窗口左上角顶点的位置,如果为空,则窗口位于屏幕中心。


如:turtle.setup(width=0.6,height=0.6)


turtle.setup(width=800,height=800,startx=100,starty=100)




画笔


在画布上,默认有一个坐标原点为画布中心的坐标轴,坐标原点上有一只面朝x轴正方向小乌龟。这里我们描述小乌龟时使用了两个词语:坐标原点(位置),面朝x轴正方向(方向),turtle绘图中,就是使用位置方向描述小乌龟(画笔)的状态。


画笔的属性


画笔(画笔的属性,颜色、画线的宽度等)


1)turtle.pensize():设置画笔的宽度;


2)turtle.pencolor():没有参数传入,返回当前画笔颜色,传入参数设置画笔颜色,可以是字符串如"green","red",也可以是RGB3元组。


3)turtle.speed(speed):设置画笔移动速度,画笔绘制的速度范围[0,10]整数,数字越大越快。




命令


操纵海龟绘图有着许多的命令,这些命令可以划分为3种:一种为运动命令,一种为画笔控制命令,还有一种是全局控制命令,其他的是其他命令。



画笔运动命令


image.png



画笔控制命令

image.png



全局控制命令


image.png


其他命令

image.png


一起学习交流 Python 的群二维码地址:http://qr01.cn/FHYKEa






目录
相关文章
|
19天前
|
数据可视化 开发者 Python
Python GUI开发:Tkinter与PyQt的实战应用与对比分析
【10月更文挑战第26天】本文介绍了Python中两种常用的GUI工具包——Tkinter和PyQt。Tkinter内置于Python标准库,适合初学者快速上手,提供基本的GUI组件和方法。PyQt基于Qt库,功能强大且灵活,适用于创建复杂的GUI应用程序。通过实战示例和对比分析,帮助开发者选择合适的工具包以满足项目需求。
63 7
|
2月前
|
Python
turtle库的几个案例进阶,代码可直接运行(python经典编程案例)
该文章展示了使用Python的turtle库进行绘图的进阶案例,包括绘制彩色圆形和复杂图案的代码示例。
340 6
turtle库的几个案例进阶,代码可直接运行(python经典编程案例)
|
2月前
|
前端开发 Python
python之【Tkinter模块】
python之【Tkinter模块】
40 5
|
2月前
|
Python
turtle库的几个简单案例,代码可直接运行(python经典编程案例)
该文章提供了多个使用Python的turtle库绘制不同图形的简单示例代码,如画三角形、正方形、多边形等,展示了如何通过turtle进行基本的绘图操作。
139 5
|
3月前
|
Python
python tkinter 实现简易秒表计时器
python tkinter 实现简易秒表计时器
107 1
|
3月前
|
数据可视化 文件存储 Python
【python】python基于tkinter的学生成绩管理系统(源码+数据文件)【独一无二】(二)
【python】python基于tkinter的学生成绩管理系统(源码+数据文件)【独一无二】(二)
103 2
|
3月前
|
存储 数据可视化 Python
【python】python tkinter 计算器GUI版本(模仿windows计算器 源码)【独一无二】
【python】python tkinter 计算器GUI版本(模仿windows计算器 源码)【独一无二】
210 1
|
4月前
|
Python
在Python中,`tkinter`是一个用于创建图形用户界面(GUI)的标准库。
在Python中,`tkinter`是一个用于创建图形用户界面(GUI)的标准库。
|
3月前
|
存储 数据可视化 数据挖掘
【Python】Tkinter电器销售有限公司销售数据分析(源码)【独一无二】
【Python】Tkinter电器销售有限公司销售数据分析(源码)【独一无二】
|
3月前
|
存储 数据可视化 UED
【Python】Tkinter超市商品选购系统 [简易版] (源码)【独一无二】
【Python】Tkinter超市商品选购系统 [简易版] (源码)【独一无二】