turtle模块是基于tkinter的模块,实现(主要画图)许多功能,这里,我们就用turtle画一个中国结吧!
介绍:
使用:turtle(画);math.sqrt(辅助)

一、导入

import turtle as t#导入turtle  老规矩,as t
from math import sqrt#导入平方根

二、中国结

class chineseKnot:#中国结'''中国结'''

三、‘初始化’函数

    def __init__(self) -> None:# 画笔初始化self.t = tself.t.title("中国结")#标题self.t.pensize(10)#笔粗self.t.setup(700, 700)#界面大小self.t.pencolor("red")#画笔颜色self.t.speed('fastest')#速度# 结心坐标self.x = 0self.y = 200

四、画

(所用的函数均在下文定义)

    def drawKnot(self) -> None:self.drawBody()self.drawEdge()self.drawAdorn()self.t.hideturtle()#隐藏画笔self.t.done()#完成

(1)、画(步骤一)

    def drawBody(self) -> None:for i in range(11):#循环self.__goto(self.x - i * 10 * sqrt(2), self.y - i * 10 * sqrt(2))self.t.seth(-45)self.t.fd(200)self.__goto(self.x + i * 10 * sqrt(2), self.y - i * 10 * sqrt(2))self.t.seth(-135)self.t.fd(200)

(2)、画(步骤二)

def drawEdge(self) -> None:for i in range(4):# 左上角self.__goto(-10 * sqrt(2) - i * 20 * sqrt(2),200 - 10 * sqrt(2) - i * 20 * sqrt(2))self.t.seth(135)self.t.fd(20)self.t.circle(10, 180)self.t.fd(20)# 右上角self.__goto(10 * sqrt(2) + i * 20 * sqrt(2),200 - 10 * sqrt(2) - i * 20 * sqrt(2))self.t.seth(45)self.t.fd(20)self.t.circle(-10, 180)self.t.fd(20)# 左下角self.__goto(-10 * sqrt(2) - i * 20 * sqrt(2),200 - 190 * sqrt(2) + i * 20 * sqrt(2))self.t.seth(-135)self.t.fd(20)self.t.circle(-10, 180)self.t.fd(20)# 右下角self.__goto(10 * sqrt(2) + i * 20 * sqrt(2),200 - 190 * sqrt(2) + i * 20 * sqrt(2))self.t.seth(-45)self.t.fd(20)self.t.circle(10, 180)self.t.fd(20)# 左侧self.t.seth(-45)self.__goto(90 * sqrt(2), 200 - 110 * sqrt(2))self.t.circle(20, 270)self.__goto(-90 * sqrt(2), 200 - 110 * sqrt(2))self.t.circle(-20, 270)# 右侧self.__goto(80 * sqrt(2), 200 - 120 * sqrt(2))self.t.circle(40, 270)self.__goto(-80 * sqrt(2), 200 - 120 * sqrt(2))self.t.circle(-40, 270)def drawAdorn(self):# 上侧self.__goto(self.x, self.y)self.t.pensize(14)self.t.seth(90)self.t.fd(60)self.__goto(0, 320)self.t.seth(180)self.t.circle(30, 360)# 下侧self.__goto(0, 200 - 200 * sqrt(2))self.t.pensize(40)self.t.seth(-90)self.t.fd(20)self.t.pensize(2)for i in range(11):self.__goto(-20 + 4 * i, 200 - 200 * sqrt(2))self.t.seth(-90)self.t.fd(200)

(3)画(步骤三)

def __goto(self, x: int, y: int) -> None:self.t.penup()#抬笔self.t.goto(x, y)#到x,yself.t.pendown()#落笔

五、运行

if __name__ == '__main__':#运行knot = chineseKnot()knot.drawKnot()

完成啦!

六、完整代码

import turtle as t#导入turtle  老规矩,as t
from math import sqrt#导入平方根class chineseKnot:#中国结'''中国结'''def __init__(self) -> None:# 画笔初始化self.t = tself.t.title("中国结")#标题self.t.pensize(10)#笔粗self.t.setup(700, 700)#界面大小self.t.pencolor("red")#画笔颜色self.t.speed('fastest')#速度# 结心坐标self.x = 0self.y = 200def drawKnot(self) -> None:self.drawBody()self.drawEdge()self.drawAdorn()self.t.hideturtle()#隐藏画笔self.t.done()#完成def drawBody(self) -> None:for i in range(11):#循环self.__goto(self.x - i * 10 * sqrt(2), self.y - i * 10 * sqrt(2))self.t.seth(-45)self.t.fd(200)self.__goto(self.x + i * 10 * sqrt(2), self.y - i * 10 * sqrt(2))self.t.seth(-135)self.t.fd(200)def drawEdge(self) -> None:for i in range(4):# 左上角self.__goto(-10 * sqrt(2) - i * 20 * sqrt(2),200 - 10 * sqrt(2) - i * 20 * sqrt(2))self.t.seth(135)self.t.fd(20)self.t.circle(10, 180)self.t.fd(20)# 右上角self.__goto(10 * sqrt(2) + i * 20 * sqrt(2),200 - 10 * sqrt(2) - i * 20 * sqrt(2))self.t.seth(45)self.t.fd(20)self.t.circle(-10, 180)self.t.fd(20)# 左下角self.__goto(-10 * sqrt(2) - i * 20 * sqrt(2),200 - 190 * sqrt(2) + i * 20 * sqrt(2))self.t.seth(-135)self.t.fd(20)self.t.circle(-10, 180)self.t.fd(20)# 右下角self.__goto(10 * sqrt(2) + i * 20 * sqrt(2),200 - 190 * sqrt(2) + i * 20 * sqrt(2))self.t.seth(-45)self.t.fd(20)self.t.circle(10, 180)self.t.fd(20)# 左侧self.t.seth(-45)self.__goto(90 * sqrt(2), 200 - 110 * sqrt(2))self.t.circle(20, 270)self.__goto(-90 * sqrt(2), 200 - 110 * sqrt(2))self.t.circle(-20, 270)# 右侧self.__goto(80 * sqrt(2), 200 - 120 * sqrt(2))self.t.circle(40, 270)self.__goto(-80 * sqrt(2), 200 - 120 * sqrt(2))self.t.circle(-40, 270)def drawAdorn(self):# 上侧self.__goto(self.x, self.y)self.t.pensize(14)self.t.seth(90)self.t.fd(60)self.__goto(0, 320)self.t.seth(180)self.t.circle(30, 360)# 下侧self.__goto(0, 200 - 200 * sqrt(2))self.t.pensize(40)self.t.seth(-90)self.t.fd(20)self.t.pensize(2)for i in range(11):self.__goto(-20 + 4 * i, 200 - 200 * sqrt(2))self.t.seth(-90)self.t.fd(200)def __goto(self, x: int, y: int) -> None:self.t.penup()self.t.goto(x, y)self.t.pendown()if __name__ == '__main__':#运行knot = chineseKnot()knot.drawKnot()

七、运行效果


最后,我们可以添加一些代码,例如当键盘按下‘d’时结束运行,按下’q’时退出等

Bye!

python 用turtle模块画一个中国结!附代码、注释相关推荐

  1. Python的turtle模块画爱心箭(附源码)

    Python的turtle模块画爱心箭源码 import turtle as t t.hideturtle() t.speed(100) def f(a,b):#画箭,a,b为箭尖坐标t.penup( ...

  2. 用python的Turtle库画一个笑脸

    用python的Turtle库画一个笑脸 最近刚了解到python的turtle库,就简单的尝试一下,画一个笑脸. 效果图: 效果图看起来和原图的差别还是有点大,但是没关系,这只是一个尝试而已. 附上 ...

  3. 用python函数画德国国旗代码_用Python的turtle模块画国旗

    最近在学Python,发现Python的海龟绘图非常有趣,就分享一下!话不多说,先来Python turtle的官方文档链接: Python turtle.这里面有turtle的各类指令.turtle ...

  4. 用python函数画德国国旗代码_使用Python的turtle模块画国旗

    Python的turtle模块画国旗主要用到两个函数:draw_rentangle和draw_star. 至于函数的调用就和我们学的C,C++是一样的.对于turtle画国旗的程序中,首先是查找国旗的 ...

  5. 利用python的turtle库画一个图形

    今天我们用python的turtle库制作一个简单的图形(新手必看) [注:turtle是python的标准自带库,无需安装!] 好的废话不多说我们开始写代码 #制作人:中将 #一起自学python ...

  6. python乌龟画五角星_使用Python的turtle模块画五角星

    使用Python中的turtle模块绘制五角星 代码 # 画国旗上的五角星 import turtle import math import numpy as np # 按照下面网址的国旗上五个五角星 ...

  7. 用python的turtle库画一个小猪佩奇

    小猪佩奇是一个可爱的小猪.她已经四岁了,与她的妈妈,爸爸,和弟弟乔治生活在一起.佩奇最喜欢做的事情是玩游戏,打扮的漂亮,度假,以及在小泥坑里快乐的跳上跳下和与小羊苏西(她最好的朋友)乔治(她的弟弟)一 ...

  8. @用Python的turtle库画一个奥运五环!

    turtle库是一个非常有意思的东西,可以做一些画,安装也非常好安装,只需要在电脑中的ide中输入pip install turtle(这是Python2.0版本的安装) python3中输入pip3 ...

  9. 用python的turtal模块画一个美国国旗

    #加载turtle模块 import turtle turtle.reset() turtle.pencolor('white') lens=190*2 kuan=100*2#画矩形 def kk(a ...

最新文章

  1. 2021高校毕业生薪酬Top100出炉!清华指数TOP,薪酬却排名第二
  2. 多角度认识markdown
  3. React事件处理函数传参问题
  4. Hadoop学习笔记—20.网站日志分析项目案例(一)项目介绍
  5. Spring JDBC-Spring对事务管理的支持
  6. SQLCE 3.5 部署打包
  7. 【OpenCV】OpenCV函数精讲之 -- copyTo()函数及Mask详解(附代码详解)
  8. python中列表生成式strip_python之列表生成式
  9. bootstrap 兼容哪些浏览器
  10. MATLAB: 你不知道的12个基础知识
  11. Hyperledger下子项目
  12. 联想无线键盘使用方法
  13. SG函数(hdu1847)
  14. 完美数的算法设计(C语言)
  15. 基于matlab的瑞利衰落信道建模和仿真
  16. VMware虚拟机XP系统安装教程
  17. PcShare服务端改造
  18. 人像抠图——基于深度学习一键去除视频背景
  19. 【精华】安卓开发学习路线规划
  20. CSDN怎么下载文件

热门文章

  1. pyecharts生成并保存图片
  2. Vi设计的可能的行经
  3. Win10安装IIS问题
  4. Linux文件权限管理基础
  5. SMT 求解器 Z3 C++ 学习笔记
  6. p30会更新鸿蒙系统吗,华为P30怎么升级鸿蒙系统 P30升级鸿蒙系统步骤教程
  7. p30pro可以更新鸿蒙系统吗,华为p30pro如何升级鸿蒙系统 华为p30pro升级鸿蒙系统教程...
  8. 字数多的海报如何设计才能抢眼?
  9. Linux静态库.a与动态库.so的生成与区别、以及.so库文件的封装与使用
  10. 个人收藏-学习SHarePoint比较不错的网站