Python中turtle库的使用

Turtle图形库

Turtle库是Python内置的图形化模块,属于标准库之一,位于Python安装目录的lib文件夹下,常用函数有以下几种:

  • 画笔控制函数

    1. penup():抬起画笔;
    2. pendown():落下画笔;
    3. pensize(width):画笔宽度;
    4. pencolor(color):画笔颜色;
  • 运动控制函数
    1. forward(d)/fd(d):直行d个像素;
    2. circle(r, extent = None):绘制半径为r,角度为extent的弧形,圆心默认在海龟左侧距离r的位置;
  • 方向控制函数
    1. setheading(angle)/seth(angle):改变前进方向;
    2. left(angle):海龟左转;
    3. right(angle):海龟右转;

Turtle库的使用

#coding=utf-8
#绘制蟒蛇
import turtle
turtle.penup()
turtle.pencolor("red")
turtle.forward(-250)
turtle.pendown()
turtle.pensize(10)
turtle.right(45)
for i in range(4):
    turtle.circle(40, 80)
    turtle.circle(-40, 80)
turtle.circle(40, 80 / 2)
turtle.fd(40)
turtle.circle(16, 180)
turtle.fd(40 * 2 / 3)
turtle.done()

结果

#coding=utf-8
# 绘制五角星
import turtle
turtle.pensize(5)
turtle.pencolor("red")
turtle.forward(200)
for i in range(4):
    turtle.right(144)
    turtle.fd(200)
turtle.done()

结果

#绘制时钟
# coding=utf-8
import turtle as tt
from datetime import *

# 当前日期属于一周的第几天
def Week(t):
    week = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"]
    return week[t.weekday()]

# 获取当前时间
def Date(t):
    y = t.year
    m = t.month
    d = t.day
    cur_hour = t.hour;
    cur_min = t.minute;
    cur_sec = t.second;
    return "%s-%d-%d %d:%02d:%02d" % (y, m, d, cur_hour, cur_min, cur_sec)

# 移动画笔,距离为distance
def movePen(distance):
    tt.penup()
    tt.pensize(5)
    tt.pencolor("blue")
    tt.fd(distance)
    tt.pendown()

# 绘制表针
def makeHands(name, length):
    # 清空窗口,重置turtule状态为初始状态
    tt.reset()
    movePen(-length * 0.1)
    # 开始记录多边形的顶点
    tt.begin_poly()
    tt.fd(length * 1.1)
    # 停止记录多边形的顶点
    tt.end_poly()
    # 返回记录的多边形
    handForm = tt.get_poly()
    tt.register_shape(name, handForm)

# 初始化
def initial():
    global secHand, minHand, hurHand, printer
    # 重置方向向北(上),正角度为顺时针
    tt.mode("logo")
    # 建立并初始化表针
    makeHands("secHand", 180)
    makeHands("minHand", 150)
    makeHands("hurHand", 110)
    secHand = tt.Turtle()
    secHand.shape("secHand")
    minHand = tt.Turtle()
    minHand.shape("minHand")
    hurHand = tt.Turtle()
    hurHand.shape("hurHand")

    for hand in secHand, minHand, hurHand:
        hand.shapesize(1, 1, 4)
        hand.speed(0)

    # 输出文字
    printer = tt.Turtle()
    # 隐藏画笔
    printer.hideturtle()
    printer.penup()

# 绘制表盘外框
def drawClock(R):
    # 清空窗口,重置turtule状态为初始状态
    tt.reset()
    # 画笔尺寸
    tt.pensize(5)
    for i in range(60):
        movePen(R)
        if i % 5 == 0:
            tt.fd(20)
            movePen(-R - 20)

            movePen(R + 20)
            if i == 0:
                # 写文本
                tt.write(int(12), align="center", font=("Consolas", 14, "bold"))
            elif i == 30:
                movePen(25)
                tt.write(int(i / 5), align="center", font=("Consolas", 14, "bold"))
                movePen(-25)
            elif (i == 25 or i == 35):
                movePen(20)
                tt.write(int(i / 5), align="center", font=("Consolas", 14, "bold"))
                movePen(-20)
            else:
                tt.write(int(i / 5), align="center", font=("Consolas", 14, "bold"))
            movePen(-R - 20)
        else:
            # 绘制指定半径和颜色的点
            tt.dot(5, "red")
            movePen(-R)
        tt.right(6)

# 表针的动态显示
def handsMove():
    t = datetime.today()
    second = t.second + t.microsecond * 0.000001
    minute = t.minute + second / 60.0
    hour = t.hour + minute / 60.0
    secHand.seth(6 * second)
    minHand.seth(6 * minute)
    hurHand.seth(30 * hour)

    tt.tracer(False)
    printer.fd(65)
    tt.pencolor("green")
    printer.write(Week(t), align="center", font = ("黑体", 14))
    printer.back(130)
    printer.write(Date(t), align="center", font = ("Consolas", 14))
    # 设置当前画笔位置为原点,方向朝东
    printer.home()
    tt.tracer(True)

    # 经过100ms后继续调用handsMove函数
    tt.ontimer(handsMove, 100)

# 调用定义的函数,打开和关闭动画,为更新图纸设置延迟;
tt.tracer(False)
initial()
drawClock(200)
tt.tracer(True)
handsMove()
tt.mainloop()

结果

欢迎关注微信公众号:村雨1943;创作不易,未经同意,转载请注明出处~

原文地址:https://www.cnblogs.com/cunyu1943/p/11489286.html

时间: 2024-10-06 10:51:49

Python中turtle库的使用的相关文章

Python中cv2库和matplotlib库色彩空间排布不一致

今天在python中读如图片时发现以下问题: 1.在from matplotlib import pyplot as plt之后,再import cv2 cv2.imshow()不能正常使用,还不知道是什么原因 目前我的解决办法是,使用cv2读入图像,然后调用plt.imshow()显示图像,不使用cv2.imshow()显示图像 2.OpenCV的cv2库中的色彩空间和matplotlib库中的色彩空间的排布方式是不一样的 cv2中的色彩排列是(b,g,r),而matplotlib库中的排列方

python中第三方库redis.py简介

1.几种连接方式介绍 """ Redis简介: 这是一个基于内存的高效的键值型非关系型数据库,存取效率极高,而且支持 多种存储数据结构,使用也比较简单. python中提供连接redis的第三方库redis.py. 在这个库中有两个类Redis和StrictRedis来实现Redis的命令操作. Redis是StrictRedis的子类,主要功能是向后兼容旧版本库里的几个方法. 在这里使用官方推荐的StrictRedis. """ from re

Python中datetime库的用法

datetime模块用于是date和time模块的合集,datetime有两个常量,MAXYEAR和MINYEAR,分别是9999和1. datetime模块定义了5个类,分别是 1.datetime.date:表示日期的类 2.datetime.datetime:表示日期时间的类 3.datetime.time:表示时间的类 from datetime import datefrom datetime import datetimefrom datetime import timefrom d

Python中的库使用之一 PIL

先上代码:本文主要工给自己参考,在需要的时候直接搜索查找就行了,不想看没有实际运行例子的文档,当参考完这部分还哦未能解决问题在参考PIL的相关文档! 1 Skip to content 2 This repository 3 Search 4 Pull requests 5 Issues 6 Gist 7 @mm1994uestc 8 Unwatch 1 9 Star 0 10 Fork 0 mm1994uestc/PythonImageProcessing 11 Code Issues 0 P

python中requests库使用方法详解

一.什么是Requests Requests 是?ython语?编写,基于urllib,采?Apache2 Licensed开源协议的 HTTP 库.它? urllib 更加?便,可以节约我们?量的?作,完全满?HTTP测试需求. ?句话--Python实现的简单易?的HTTP库 二.安装Requests库 进入命令行win+R执行 命令:pip install requests 项目导入:import requests 三.各种请求方式 直接上代码,不明白可以查看我的urllib的基本使用方法

python 的 turtle 库(一)

TurtleScreen类 绘图窗口定义为绘图龟的操场 函数Screen() 返回一个TurtleScreen子类的单例对象 RawTurtle(别名:RawPen) 在TurtleScreen上绘制的Turtle对象 一.移动并绘制: 1.forward() | fd() turtle.forward(distance) turtle.fd(distance) 参数:distance - 一个数字(整数或浮点数) 2.turtle.back(distance) turtle.bk(distan

python中pyquery库的css选择器实战解析

1.pyquery部分选择器解释 """pyquery的CSS选择器方法""" from pyquery import PyQuery html = """ <div id="container"> <table class="tablelist" cellpadding="0" cellspacing="0">

浅谈python中selenium库调动webdriver驱动浏览器的实现原理

最近学web自动化时用到selenium库,感觉很神奇,遂琢磨了一下,写了点心得. 当我们输入以下三行代码并执行时,会发现新打开了一个浏览器窗口并访问了百度首页,然而这是怎么做到的呢? 1 from selenium import webdriver 2 driver = webdriver.Chrome() 3 driver.get('http://www.baidu.com') 首先我们来看一下selenium库的结构: 很显然,selenium就是一个软件包,里面有两个一级子包,commo

python中opencv库的使用之目标检测(二)

1 #course15.py 2 import numpy as np 3 import cv2 4 5 # multiple cascades: https://github.com/Itseez/opencv/tree/master/data/haarcascades 6 7 #https://github.com/Itseez/opencv/blob/master/data/haarcascades/haarcascade_frontalface_default.xml 8 face_ca