1、图形用户界面
PyQt5:Qt开发框架的Python接口
-提供了创建Qt5程序的Python API接口,Qt是非常成熟的跨平台桌面应用开发系统,完备GUI
-推荐的Python GUI开发第三方库
-https://www.riverbankcomputing.com/software/pyqt
wxPython:跨平台GUI开发框架
-提供了专用于Python的跨平台GUI开发框架
-理解数据类型与索引的关系,操作索引即操作数据
-Python最主要的数据分析功能库,基于Numpy开发
import wx
app = wx.App(False)
frame = wx.Frame(None,wx.ID_ANY,"Hello World")
frame.Show(True)
app.MainLoop()
PyGObject:使用GTK+开发GUI的功能库
-提供了整合GTK+、WebKitGTK+等库的功能
-GTK+:跨平台的一种用户图形界面GUI框架
-实例:Anaconda采用该库构建GUI
-https://pygobject.readthedocs.io
import gi
gi.require_version("Gtk","3.0")
from gi.repository import Gtk
window = Gtk.window(title="Hello World")
window.show()
window.connect("destory",Gtk.main_quit)
Gtk.main()
2、Python库之游戏开发
PyGame:简单的游戏开发功能库
-提供了基于SDL的简单游戏开发功能及实现引擎,理解游戏对外部输入的响应机制及角色构建和交互机制
-Python游戏入门最主要的第三方库
Panda3D:开源、跨平台的3D渲染和游戏开发库
-一个3D游戏引擎,提供Python和C++两种接口,支持很多先进特性:法线贴图、光泽贴图、卡通渲染等
-由迪士尼和卡尼基梅隆大学共同开发
cocos2d:构建2D游戏和图形界面交互式应用的框架
-提供了基于OpenGL的游戏开发图形渲染功能
-支持GPU加速,采用树形结构分层管理游戏对象类型
-适用于2D专业级游戏开发
3、Python库之虚拟现实
VR Zero:在树莓派上开发VR应用的Python库
-提供了大量与VR开发相关的功能,针对树莓派的VR开发库,支持设备小型化,配置简单化
-非常适合初学者实践VR开发及应用
-Raspberry Pi(中文名为”树莓派“,简写为RPi,(或者RasPi/RPI)是为学习计算机编程教育而设计,只有信用卡大小的微型电脑,其系统基于Linux。随着Windows 10 IoT的发布,我们也将可以用上运行Windows的树莓派)
-https://github.com/WayneKeenan/python-vrzero
pyovr:Oculus Rift的Python开发接口,开发Oculus Rift的Python库
-针对Oculus VR设备的Python开发库
-基于成熟的VR设备,提供全套文档,工业级应用设备
-Python+虚拟现实领域探索的一种思路
-https://github.com/cmbruns/pyovr
Vizard:基于Python的通用VR开发引擎
-专业的企业级虚拟现实开发引擎,提供详细的官方文档
-支持多种主流的VR硬件设备,具有一定通用性
-https://www.worldviz.com/vizard-virtual-reality-software
4、Python库之图形艺术
Quads:迭代的艺术
-对图片进行四分迭代,形成像素风,可以生成动图或静图图像
-简单易用,具有很高展示度
-https://github.com/fogleman/Quads
ascii_art:ASCII艺术库
-将普通图片转为ASCII艺术风格,输出可以是纯文本或彩色文本
-可采用图片格式输出
-https://github.com/jontonsoup4/ascii_art
turtle:海龟绘图体系
-Random Art
-https://docs.python.org/3/library/turtle.html
玫瑰花的绘制
问题分析:绘图机理:turtle基本图形机制
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()
运行结果: