Python——交互式图形编程

1、图形显示

图素法

像素法

图素法---矢量图:以图形对象为基本元素组成的图形,如矩形、 圆形

像素法---标量图:以像素点为基本单位形成图形

2、图形用户界面:Graphical User Interface,GUI

Tkinter---Python 标准GUI

Graphics---基于Tkinter扩展图形库

Turtle---python内置的图形库。

3、安装graphics库

安装在D:\Python3\Lib\site-packages,网址http://mcsp.wartburg.edu/zelle/python/graphics.py

4、graphics库

(1)创建图形窗口

图形窗口

点(像素)的集合

GraphWin对象尺寸默认值:高200像素,宽200像素。

参考坐标系
? Graphics\Tkinter
? 点(0,0)表示屏幕左上角
? X轴正方向为从左到右
? Y轴正方向为从上到下。
? 默认窗口大小为200*200

简洁形式

(2)点

移动点

move(x,y)方法
清除原来点的图像,并在新位置重新绘制
两个数字参数:x,y

(2)圆

 1 from graphics import *
 2 win=GraphWin()
 3 leftEye=Circle(Point(80,80),5)
 4 leftEye.setFill("yellow")
 5 leftEye.setOutline("red")
 6 rightEye=leftEye
 7 rightEye.move(40,0)
 8
 9 leftEye.draw(win)
10 rightEye.draw(win)

左眼右眼重叠了,说明,移动后原来的图就不存在了。

from graphics import *
win=GraphWin()
leftEye=Circle(Point(80,80),5)
leftEye.setFill("yellow")
leftEye.setOutline("red")
rightEye=Circle(Point(120,80),5)
rightEye.setFill("yellow")
rightEye.setOutline("red")

leftEye.draw(win)
rightEye.draw(win)

(3)face

 1 from graphics import *
 2
 3 win=GraphWin()
 4 face=Circle(Point(100,95),50)
 5 leftEye=Circle(Point(80,80),5)
 6 leftEye.setFill("yellow")
 7 leftEye.setOutline("red")
 8 rightEye=Circle(Point(120,80),5)
 9 rightEye.setFill("yellow")
10 rightEye.setOutline("red")
11 mouth=Line(Point(80,110),Point(120,110))
12
13 face.draw(win)
14 mouth.draw(win)
15 leftEye.draw(win)
16 rightEye.draw(win)

5、交互式图形接口

图形用户界面(图形用户接口),
? 采用图形方式显示的计算机操作用户界面
? 用于程序的输入和输出
? 事件驱动

Graphics模块
? 隐藏了底层事件的处理机制,
? 提供了获得用户在窗口中的输入
? 捕捉鼠标点击
? 处理文本输入

(1)捕捉鼠标点击

 1 from graphics import *
 2
 3 def main():
 4     win=GraphWin("Click me")#标题栏名
 5     for i in range(10):
 6         p=win.getMouse()
 7         print("you click at:",p.getX(),p.getY())
 8 if __name__=="__main__":
 9     main()
10     

(2)四边形

 1 from graphics import *
 2
 3 def main():
 4     win=GraphWin("draw a polygon",500,500)#标题栏名
 5     win.setCoords(0,0,500,500)#变换坐标,左下角和右上角
 6     message=Text(Point(250,50),"click on four points")#下面中心位置
 7     message.draw(win)
 8
 9     #获取四个点
10     p1=win.getMouse()
11     p1.draw(win)
12     p2=win.getMouse()
13     p2.draw(win)
14     p3=win.getMouse()
15     p3.draw(win)
16     p4=win.getMouse()
17     p4.draw(win)
18
19     #顺次画出闭合图形
20     polygon=Polygon(p1,p2,p3,p4)
21     polygon.setFill("red")
22     polygon.setOutline(‘black‘)
23     polygon.draw(win)
24
25     message.setText(‘click anywhere to quit‘)
26     win.getMouse()
27
28 if __name__=="__main__":
29     main()
30     

6、温度转换界面

(1)输入窗口

 1 from graphics import *
 2
 3 win = GraphWin("Celsius Converter", 400, 300)#载入界面,标题栏
 4 win.setCoords(0.0, 0.0, 3.0, 4.0)#按比例转换坐标
 5
 6 # 绘制接口
 7 Text(Point(1,3), " Celsius Temperature:").draw(win)#输入文字
 8 Text(Point(1,1), "Fahrenheit Temperature:").draw(win)
 9
10 input= Entry(Point(2,3),5)#前面是位置,后面是宽度,可以写数字
11 input.setText("0.0")
12 input.draw(win)

Entry输入可以让用户自己输入内容,setText()是填充入内容,用户可以修改。

(2)完整代码

 1 from graphics import *
 2
 3 win = GraphWin("Celsius Converter", 400, 300)#载入界面,标题栏
 4 win.setCoords(0.0, 0.0, 3.0, 4.0)#按比例转换坐标
 5
 6 # 绘制接口
 7 Text(Point(1,3), " Celsius Temperature:").draw(win)#输入文字
 8 Text(Point(1,1), "Fahrenheit Temperature:").draw(win)
 9
10 input= Entry(Point(2,3),5)#前面是位置,后面是宽度,可以写数字
11 input.setText("0.0")
12 input.draw(win)
13
14 output = Text(Point(2,1),"")#确定输出位置
15 output.draw(win)
16
17 button = Text(Point(1.5,2.0),"Convert It")#按钮字样
18 button.draw(win)
19 Rectangle(Point(1,1.5), Point(2,2.5)).draw(win)#长方形
20
21 # 等待鼠标点击
22 win.getMouse()
23 # 转换输入
24 celsius = eval(input.getText())#得到你的输入值,getText()
25
26 fahrenheit = 9.0/5.0 * celsius + 32.0
27 # 显示输出,改变按钮
28 output.setText(fahrenheit)#输出温度值,setText()
29 button.setText("Quit")
30 # 等待响应鼠标点击,退出程序
31 win.getMouse()
32 win.close()

体会Text和Entry的区别,前者只能由程序输入内容,后者可以在图形界面输入内容;两者都是用getText()获取内容,用setText()展示内容。

时间: 2024-10-24 10:36:24

Python——交互式图形编程的相关文章

python学习--交互式图形编程实例四

#!/usr/bin/env python3 # -*- coding: utf-8 -*-#画雪 from turtle import * from random import * def ground(): hideturtle() speed(100) for i in range(400): pensize(randint(5,10)) #画笔大小随机 x = randint(-400,350) y = randint(-280,-1) r = -y/280 #<1的随机值 g = -y

python图形编程

python 图形编程 from Tkinter import *root=Tk()root.title("my test")root.mainloop() #主循环以上是建立一个空白的窗体====================================== button1=Button(root,text="button1")button2=Button(root,text="button2")button3=Button(root,t

Python最简单的图形编程

使用Python进行图像编程,要使用到Graphics库.Graphics库可以从http://mcsp.wartburg.edu/zelle/python/graphics.py获取.在Windows平台上将下载的graphics.py保存在C:\Python31\Lib\site-packages即可. 下面的代码显示了如何画点.画线.画圆.画矩形.画椭圆以及显示文字. from graphics import * #设置画布窗口名和尺寸 win = GraphWin('CSSA', 700

Python金融应用编程(数据分析、定价与量化投资)

近年来,金融领域的量化分析越来越受到理论界与实务界的重视,量化分析的技术也取得了较大的进展,成为备受关注的一个热点领域.所谓金融量化,就是将金融分析理论与计算机编程技术相结合,更为有效的利用现代计算技术实现准确的金融资产定价以及交易机会的发现.量化分析目前已经涉及到金融领域的方方面面,包括基础和衍生金融资产定价.风险管理.量化投资等.随着大数据技术的发展,量化分析还逐步与大数据结合在一起,对海量金融数据实现有效和快速的运算与处理. 在量化金融的时代,选用一种合适的编程语言对于金融模型的实现是至关

Python黑帽编程3.0 第三章 网络接口层攻击基础知识

3.0 第三章 网络接口层攻击基础知识 首先还是要提醒各位同学,在学习本章之前,请认真的学习TCP/IP体系结构的相关知识,本系列教程在这方面只会浅尝辄止. 本节简单概述下OSI七层模型和TCP/IP四层模型之间的对应关系,最后是本章教程需要的几个核心Python模块. 3.0.1 TCP/IP分层模型 国际标准化组织(ISO)在1978年提出了"开放系统互联参考模型",即著名的OSI/RM模型(Open System Interconnection/Reference Model).

Python进阶--GUI编程

一.图形用户图面(GUI编程) 1. wxpython下载和安装: 下载url: http://wxpython.org/download.php 2.创建示例GUI应用程序 : ①开始需要导入wx 模块 ②初始化 import wx app = wx.App() 3. 窗口和组件 窗口(window) 也称为框架(Frame), 它只是wx.Frame类的实例. 4.事件处理(event) 详细介绍:http://files.cnblogs.com/fwindpeak/wxPython.in.

Python 3 并发编程多进程之队列(推荐使用)

Python 3 并发编程多进程之队列(推荐使用) 进程彼此之间互相隔离,要实现进程间通信(IPC),multiprocessing模块支持两种形式:队列和管道,这两种方式都是使用消息传递的. 可以往队列里放任意类型的数据 创建队列的类(底层就是以管道和锁定的方式实现): 1 Queue([maxsize]):创建共享的进程队列,Queue是多进程安全的队列,可以使用Queue实现多进程之间的数据传递. 参数介绍: 1 maxsize是队列中允许最大项数,省略则无大小限制. 方法介绍: 1.主要

Python黑帽编程 3.4 跨越VLAN

Python黑帽编程 3.4 跨域VLAN VLAN(Virtual Local Area Network),是基于以太网交互技术构建的虚拟网络,既可以将同一物理网络划分成多个VALN,也可以跨越物理网络障碍,将不同子网中的用户划到同一个VLAN中.图2是一个VLAN划分的例子. 图2 实现VLAN的方式有很多种,基于交换设备的VLAN划分,一般有两种: l  基于交换机的端口划分 l  基于IEEE 802.1q协议,扩展以太网帧格式 基于第二层的VLAN技术,有个Trunking的概念,Tr

Python运维编程

Python运维编程 作者:Danbo  2015-10-11 什么是Python,为什么要使用Python? 这个大家自行谷歌,不过看看知乎你就知道Python有多么强大:http://www.zhihu.com/question/25038841  #大蟒蛇是人形自走跑有木有啊! 首先你要知道Python很强大.Python是一个胶水语言(Glue Language).与Perl最大的不同是Python开发的哲学是:用一种方法,最好是只有一种方法来做一件事,而Perl是:总是有多种方法来做同