Python 程序设计(第3版)—— graphics模块参考

graphics模块参考

1. GraphWin对象
  • GraphWin(title,width,height) 构造一个新的图形窗口,用于在屏幕上绘图。
win = GraphWin("Investment Grownth", 640,480)
  • plot(x,y,color) 在窗口中(x,y)处绘制像素。
win.plot(35,128,"blue")
  • plotPixel(x,y,color) 在“原始”位置(x,y)处绘制像素,忽略setCoords设置的任何坐标变换
win.plotPixel(35,128,"blue")
  • setBackground(color) 将窗口背景设置为给定的颜色。默认背景颜色取决于系统。
win.setBackground("white")
  • close() 关闭屏幕窗口
win.close()
  • getMouse() 暂停等待用户在窗口中单击鼠标,并用Point对象返回鼠标点击的位置
clickPoint = win.getMouse()
  • checkMouse() 与getMouse()类似,但不会暂停等待用户单击。返回鼠标点击的最后一个点,如果自上次调用checkMouse或getMouse后未点击窗口,则返回None。(这对于控制动画循环特别有用)
clickPoint = win.checkMouse()
  • getKey() 暂停等待用户在键盘上键入一个键,并返回一个表示被按下键的字符串
keyString = win.getKey()
  • checkKey() 与getKey()类似,但不会暂停等待用户按下一个键。返回被按下的最后一个键,如果从上一次调用checkKey或getKey后没有按下任何键,则返回" "。(这对于控制简单的动画循环特别有用)
keyString = win.checkKey()
  • setCoords(xll,yll,xur,yur) 设置窗口的坐标系。当前绘制的对象被重绘,而后续的绘制将相对于新的坐标系统(除plotPixel以外)
win.setCoords(0,0,200,100)
2.图形对象1
  • setFill(color) 将对象的内部设置为给定的颜色
someObject.setFill("red")
  • setOutline(color) 将对象的轮廓设置为给定的颜色
someObject.setOutline("yellow")
  • setWidth(pixel) 将对象的轮廓宽度设置为所需的像素数。(不适用于Point)
someObject.setWidth(3)
  • draw(aGraphWin) 将对象绘制到给定的GraphWin中并返回绘制对象。
someObject.draw(someGraphWin)
  • undraw() 从图形窗口中擦除对象。如果对象当前未绘制,则不采取任何操作
someObeject.undraw()
  • move(dx,dy) 在x方向上移动对象dx单位,在y方向上移动dy单位。如果对象当前已绘制,则将图像调整到新位置。
someObject.move(10,15.5)
  • clone() 返回对象的副本。克隆始终以未绘制状态创建,除此之外,它们与被克隆的对象一样。
objectCopy = someObject.clone()
Point 方法
  • Point(x,y) 构造具有给定坐标的点
aPoint = Point(3.5,8)
  • get() 返回点的x坐标
xValue = aPoint.getX()
  • getY() 返回点的y坐标
yValue = aPoint.getY()
Line 方法
  • Line(point1,point2) 构造从point1到point2的线段
aLine = Line(Point(1,3),Point(7,4))
  • setArrow(endString) 设置线段的箭头状态。 箭头可以在第一端点、最后端点或两个duandian行绘制。
aLine.setArrow("both")
  • getCenter() 返回线段中点的克隆
midPoint = aLine.getCenter()
  • getP1()、getP2() 返回线段中的对应端点的克隆
startPoint = aLine.getP1()
Circle方法
  • Circle(centerPoint,radius) 构造具有给定圆心和半径的圆。
aCircle = Circle(Point(3,4),10.5)
  • getCenter() 返回圆心的克隆
centerPoint = aCircle.getCenter()
  • getRadius() 返回圆的半径
radius = aCircle.getRadius()
  • getP1()、getP2() 返回圆的边界框的对应角落的克隆。它们是围绕圆的正方形的对角点
cornerPoint = aCircle.getP1()
Rectangle 方法
  • Rectangle(point1,point2) 构造一个对角点在point1和point2的矩形
aRectangle = Rectangle(Point(1,3),Point(4,7))
  • getCenter 返回矩形中心点的克隆
centerPoint = aRectangle.getCenter()
  • gerP1()、getP2() 返回用于构造矩形的对应点的克隆
cornerPoint = aRectangle.getP1()
Oval 方法
  • Oval(point1,point2) 在由point1 和point2确定的边界框中构造一个椭圆
anOval = Oval(Point(1,2),Point(3,4))
  • getCenter() 返回椭圆形中心点的克隆
centerPoint = anOval.getCenter()
  • getP1()、getP2() 返回用于构造椭圆的对应点的克隆
cornerPoint = anOval.getP1()
Polygon 方法
  • Polygon(point1,point2,point3,…) 构造一个以给定点为顶点的多边形。也接受单个参数,即顶点的列表。
aPolygon = Polygon(Point(1,2),Point(3,4),Point(5,6))
aPolygon = Polygon([Point(1,2),Point(3,4),Point(5,6)])
  • getPoints() 返回一个列表,包含用于构造多边形的点的克隆
pointList = aPolygon.getPoints()
Text 方法
  • Text(anchorPoint,textString) 构造一个文本对象,显示以anchorPoint为中心的文本字符串。文本水平显示。
message = Text(Point(3,4),"Hello")
  • setText(string) 将对象的文本设置为字符串
message.setText("Goodbye!")
  • getText() 返回当前字符串
msgString = message.getText()
  • getAnchor() 返回锚点的克隆
centerPoint = message.getAnchor()
  • setFace(family) 将字体更改为给定的系列。可能值有“helvatica”、“courier”、“times”、“roman”和“arial”
message.setFace("arial")
  • setSize(point) 将字体大小更改为给定的点大小,从5点到36点是合法的
message.setSize(7)
  • setStyle(style) 将字体更改为给定的样式。可能值有“normal”、“bold”、“italic”和“bold italic”
message.setStyle("bold")
  • setTextColor(color) 将文本的颜色设置为彩色。注意:setFill有同样的效果
message.setTextColor("pink")

3. Entry 对象

Entry对象支持通用的图形方法move()draw(graphwin)undraw()setFill(color)clone()
特有方法如下:

  • Entry(centerPoint,width) 构造具有给定中心点和宽度的Entry。宽度用可显示的文本字符数指定。
inputBox = Entry(Point(3,4),5)
  • getAnchor() 返回输入框居中点的克隆
centerPoint = inputBox.getAnchor()
  • getText() 返回当前在输入框中的文本字符串
inputStr = inputBox.getText()
  • setText(string) 将输入框中的文本设置为给定字符串
inputBox.setText("32.0")
  • setFace(family) 将字体更改为给定的系列。可能的值是“helvetica”、“courier”、“times roman”和“arial”
inputBox.setFace("courier")
  • setSize(point) 将字体更改为给定的点大小。从5点到36点是合法的。
inputBox.setSize(12)
  • setStyle(style) 将字体更改为给定的样式。可能的值有“normal”、“bold”、“italic”、“bold italic”
inputBox.setStyle("italic")
  • setTextColor(color) 设置文本的颜色
inputBox.setTextColor("green")
4. 显示图像2

显示是使用Image对象完成的。图像支持通用方法move(dx,dy)、draw(graphwin)、undraw()和clone()。

Image特有的方法如下:

  • Image(anchorPoint,filename) 利用给定文件的内容构造图像,以给定锚点为中心。也可以使用width和height参数而不是filename来调用。在这种情况下,将创建给定宽度和高度(以像素为单位)的空白(透明)图像。
flowerImage = Image(Point(100,100),"flower.gif")
blankImage = Image(320,240)
  • getAnchor() 返回图像居中点的克隆
centerPoint = flowerImage.getAnchor()
  • getWidth() 返回图像的宽度
widthInPixels = flowerImage.getWidth()
  • getHeighh() 返回图像的高度
heighInPixels = flowerImage.getHeight()
  • getPixel(x,y) 返回位置(x,y)处的像素的RGB值的列表[红,绿,蓝]。注意,像素位置是相对于图像本身的,而不是绘制图像的窗口。图像的左上角始终是像素(0,0)。
red,green,blue = flowerImage.getPixel(32,18)
  • setPixel(x,y,color) 将位置(x,y)处的像素设置为给定颜色。 注意:这是一个缓慢的操作。
flowerImage.setPixel(32,18,"blue")
  • save(filename) 将图像保存为文件。所得文件类型(如GIF或PPM)由文件名的扩展名确定
flowerImagae.save("mypic.ppm")
5. 生成颜色
  • 颜色由字符串表示。
    最常见的颜色,如“red”、“pruple”、“green”、“cyan”等,应该直接可用。许多颜色具有各种色调,例如“red1”、“red2”、“red3”、“red4”,这是越来越暗的红色。关于完整列表,可在网络上查找X11颜色名称3
  • color_rgb(red,green,blue) 返回一个表示颜色的字符串,该颜色是指定的红色、绿色和蓝色的强度的混合。它们应该是在0-255范围内的int。因此,color_rgb(255,0,0)是亮红色,而(130,0,130)是中等品红色。
aCircle.setFill(color rgb(130,0,130))
控制显示更新(高级)

通常,每当任何图形对象的可见状态以某种方式改变时,GraphWin的可视显示就会更新。然而,在某种情况下,例如在一些交互式shell中使用graphics库时,可能需要强制窗口更新以便看到改变。update() 函数用于执行此操作

update() 导致所有挂起的图形操作得到执行,并显示结果

出于效率的原因,有时期望关闭每当一个对象改变时窗口所进行的自动更新。例如,在动画中,你可能需要在显示动画的下一“帧”之前更改多个对象的外观。GraphWin构造函数包括了一个名为autoflush 的特殊额外参数,用于控制这种自动更新。默认情况下,创建窗口时,自动更新将打开。要关闭它,autoflush参数应该设置为False,像这样:

win = GraphWin("My Animation",400,400,autoflush = False)

现在对win中对象的更改只会在图形系统由一些空闲时间通过调用update()强制更改时显示。

update()方法还接受一个可选参数,指定可以进行更新的最大速率(每秒)。这对于以独立于硬件的方式控制动画的速度是有用的。例如,将命令update(30)放置在循环的底部,确保循环将每秒“回转”最多30次。update命令将每次插入一个适当的暂停,以保持相对恒定的速率。当然,只在循环本身的执行少于1/30秒时,速率调节才起作用。

## 示例: 1000帧, 每秒30帧
win = GraphWin("Update Example", 320,200, autofulsh = False)
for i in range(1000):
	# <drawing commands for ith frame>
	update(30)

  1. 给模块提供了类Point、Line、Circle、Oval、Rectangle、Polygon、Text 的可绘制对象。最初创建的所有对象都有未填充的黑色轮廓。所有图形对象都支持以下的通用的方法集 ↩︎

  2. graphics模块还提供了在GraphWin中显示和操作图像的最小支持。大多数平台至少支持PPM和GIF图像。 ↩︎

  3. 网络上查到的可以用字符串表示的颜色
    可用字符串直接表示的颜色 ↩︎

  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Use Python’s built-in features to create innovative graphics for data visualization and technical illustrations. This book goes beyond simple commands and libraries to explain how to not only display but also rotate, shade, and edit graphics for any purpose. Starting with the essential Python functions to set up a plotting space and produce 2 and 3-dimensional objects, you’ll learn how to construct more complex objects, translate and rotate them, remove hidden lines, introduce shading to add realism, and project images to visualize any dataset. The final chapter includes several worked applications in science and engineering including planetary models, which you can adapt for your own use. Written for developers who want to harness Python’s capabilities to fine-tune their images, Python Graphics covers the different commands for plotting dots, lines, arrows, or arcs, creating custom plotting grids, correcting distortions, adding text and labels to illustrations, manipulating arcs and circles, specify and use colors, and more. Armed with these techniques and core math skills, you’ll be ready to create and customize detailed technical illustrations or data visualizations. What You’ll Learn Use Python′s built-in commands for plotting, removing distortions, and rotating objects Create and edit 2D and 3D objects Develop illustrations for scientific and engineering applications Who This Book Is For Python developers looking for tips on how to create illustrations and visualizations, as well as scientists, engineers, or students using Python. It assumes familiarity with vectors, matrices, geometry and trigonometry.
### 回答1: 《Python程序设计 第3》是一本基于Python语言的编程教材,主要面向初学者,但对于已经掌握基本编程知识的人来说也有很大的帮助。本书分为14章,涵盖了Python的基本语法、文件操作、函数、异常处理、面向对象编程、GUI编程、网络编程等方面。每一章都有大量的实例,可以帮助读者掌握具体的编程方法和技巧。此外,本书还对Python 3.0进行了介绍,帮助读者了解Python的最新特性和改进。值得一提的是,本书并不仅仅是讲解Python的语法规则,而是注重将编程与实际应用相结合,让读者能够在学习的同时,也能够认识到Python在日常应用中的实际价值。本书的优点在于内容简单易懂,例子实用,适合初学者。此外,书中的技术点非常实用,可以让读者迅速掌握Python的编程方法。总体来说,本书是一本非常好的Python编程入门教材,不仅适合初学者,也适合已经掌握了基本编程的人用作参考。 ### 回答2: 《Python程序设计 第3》是一本非常优秀的Python编程入门书籍,作者为董付国。本书全面系统地介绍了Python的基础语法、函数、数据结构、面向对象编程、网络编程、GUI编程、数据库访问等方面的内容,适合初学者和从其他编程语言转换来的程序员使用。 本书通过许多实例代码,为读者提供了多种锻炼编程能力的机会。同时,本书在翻译方面也非常到位,对于学习英文有困难的读者来说非常友好。 本书还专门讲解了Python 3.x本的新特性,并与Python 2.x的差异进行了比较和解释。同时,本书也附带了Python安装、模块管理、调试技巧等方面的实用知识,方便读者更好地使用Python进行编程。 总之,《Python程序设计 第3》不仅是一本Python编程的入门书籍,也是一本Python编程的实践指南。对于想要学习Python编程的读者来说,是一本非常有价值的书籍。 ### 回答3: 《Python程序设计》第3是一本深入浅出的Python语言教程,作者董付国教授是一名Python领域的专家,他通过本书向读者展示了Python编程语言的特点、语法和应用,涉及了Python 3 这个本的所有内容,难度分布合理,讲解清晰易懂。 本书共分为11个章节,从Python基础语法、面向对象程序设计、函数式编程、文件与异常处理、程序性能优化等方面,全面系统地介绍了Python的各个方面,同时也为读者提供了许多案例实践,让读者在学习的过程中逐渐熟悉并掌握Python的编程方法。 本书不仅适合Python初学者使用,也适合Python开发者使用,通过深入浅出的讲解和丰富的示例,不仅可以帮助初学者逐步理解Python语言,也可以帮助开发者提高编程技巧和提升开发效率。 总之,《Python程序设计》第3是学习Python编程的高质量教材,它不仅能够丰富读者的Python知识,而且还能帮助读者理解编程思路,为读者开拓编程思路,提高编程技能,实际开发中也是非常有参考价值的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值