Python库之图形用户界面
Riverbank Computing | Introduction
Welcome to wxPython! | wxPython
Overview — PyGObject
Python库之游戏开发
https://www.pygame.org/news
Panda3D | Open Source Framework for 3D Rendering & Games
python.cocos2d.org
Python库之虚拟现实
WayneKeenan/python-vrzero: There's a blog about this repository here: (github.com)
cmbruns/pyovr: Python bindings for Oculus Rift virtual reality SDK (github.com)
Vizard | Virtual Reality software for researchers (worldviz.com)
Python库之图形艺术
fogleman/Quads: Computer art based on quadtrees. (github.com)
jontonsoup4/ascii_art: Converts images to ASCII art (github.com)
turtle — Turtle graphics — Python 3.11.3 documentation
玫瑰花绘制实例
import turtle as t
# 定义一个曲线绘制函数
def DegreeCurve(n, r, d=1):
for i in range(n):
t.left(d)
t.circle(r, abs(d))
# 初始位置设定
s = 0.2 # size
t.setup(450*5*s, 750*5*s)
t.pencolor("black")
t.fillcolor("red")
t.speed(100)
t.penup()
t.goto(0, 900*s)
t.pendown()
# 绘制花朵形状
t.begin_fill()
t.circle(200*s,30)
DegreeCurve(60, 50*s)
t.circle(200*s,30)
DegreeCurve(4, 100*s)
t.circle(200*s,50)
DegreeCurve(50, 50*s)
t.circle(350*s,65)
DegreeCurve(40, 70*s)
t.circle(150*s,50)
DegreeCurve(20, 50*s, -1)
t.circle(400*s,60)
DegreeCurve(18, 50*s)
t.fd(250*s)
t.right(150)
t.circle(-500*s,12)
t.left(140)
t.circle(550*s,110)
t.left(27)
t.circle(650*s,100)
t.left(130)
t.circle(-300*s,20)
t.right(123)
t.circle(220*s,57)
t.end_fill()
# 绘制花枝形状
t.left(120)
t.fd(280*s)
t.left(115)
t.circle(300*s,33)
t.left(180)
t.circle(-300*s,33)
DegreeCurve(70, 225*s, -1)
t.circle(350*s,104)
t.left(90)
t.circle(200*s,105)
t.circle(-500*s,63)
t.penup()
t.goto(170*s,-30*s)
t.pendown()
t.left(160)
DegreeCurve(20, 2500*s)
DegreeCurve(220, 250*s, -1)
# 绘制一个绿色叶子
t.fillcolor('green')
t.penup()
t.goto(670*s,-180*s)
t.pendown()
t.right(140)
t.begin_fill()
t.circle(300*s,120)
t.left(60)
t.circle(300*s,120)
t.end_fill()
t.penup()
t.goto(180*s,-550*s)
t.pendown()
t.right(85)
t.circle(600*s,40)
# 绘制另一个绿色叶子
t.penup()
t.goto(-150*s,-1000*s)
t.pendown()
t.begin_fill()
t.rt(120)
t.circle(300*s,115)
t.left(75)
t.circle(300*s,100)
t.end_fill()
t.penup()
t.goto(430*s,-1070*s)
t.pendown()
t.right(30)
t.circle(-600*s,35)
t.done()
这段代码使用turtle模块绘制了一个玫瑰花的图案。具体实现如下:
-
定义了一个函数
DegreeCurve
,该函数用于绘制一条弧线,包含三个参数:n
为绘制的弧线的线段数,r
为弧线的半径,d
为绘制方向,即正值为逆时针,负值为顺时针。 -
初始化turtle画布的大小、画笔颜色和填充颜色等参数,并设定绘制速度。
-
绘制花朵形状:首先绘制一个圆形,然后绘制两段半径为200s的弧线和一段100s的弧线,接着绘制两段半径为50s的曲线和一段半径为350s的弧线,最后绘制一段半径为70s的曲线、一段半径为150s的弧线、一段半径为50s的曲线、一段半径为400s的弧线、一段半径为50s的曲线和一段前进250s的直线。
-
绘制花枝形状:向右旋转150度,前进280s,向左旋转115度,绘制一段半径为300s的弧线、一段半径为225s的曲线、一段半径为350s的弧线、向左旋转90度、绘制一段半径为200s的弧线和一段半径为500s的弧线,最后绘制一段20个线段、半径为2500s的曲线和一段220个线段、半径为250s的曲线。
-
绘制两个绿色的叶子:分别绘制两个半径为300s的圆弧和一段前进600s的直线,然后绘制第二个叶子,包含两段半径为300s和一段半径为600s的弧线。
-
绘制完成后,关闭turtle画布。