简介丰富多彩的Python应用程序

开发 后端
在一个Python应用程序中,我们用一组插件来实现一些具有统一接口的功能,我们使用Python来代替动态链接库形式的插件。

本文详细说明Python应用程序能够把数据和操作数据的函数放在一起,能够比较清晰,虽然有所谓的数据隐藏的概念,但是在python中其实就是一个不要直接调用对象中的数据的约定,而要用一个函数作为中转。

其实不懂面向对象很正常,其实有的时候就是要在用的中间感悟的。什么时候把用函数编程用牛了,用出个道道来了,说不定你已经感觉到了什么是面向对象编程。另外:所谓什么OO,都是一些认为规定,不用语法支持,只要心中有这个想法(什么想法?自己悟啊),就能够写出OO的代码,不管你用的是什么语言,什么语法。

  1. # setup.py  
  2. from distutils.core import setup  
  3. import glob  
  4. import py2exe  
  5.  
  6. setup(name="myscript",  
  7.       scripts=["myscript.py"],  
  8.       data_files=[("bitmaps",  
  9.                    ["bm/large.gif", "bm/small.gif"]),  
  10.                   ("fonts",  
  11.                    glob.glob("fonts\\*.fnt"))],  

图形界面的奥秘其实并不深奥。我相信很多人学习windows编程都是从写一个窗口开始的,而且都是从尝试理解那个消息和事件驱动的模型入手的。大体的过程是这样的,窗口就是用象素画出来的。你可以把一个窗口想象成一个窗口,也可以把窗口看成一堆象素的集合。就像有人说看女色不过是皮肉色相一样。

而且窗口中的按钮,编辑矿,各种图标,无论是什么看起来像一个”物体“的东西,其实本质上都是有应用程序或者是库或者是操作系统调用显卡的驱动,通过显卡的功能在屏幕上绘画一些点出来。而所谓的”物体“有很多称法,在windows中一般成为控件(control)。

而对于图形界面的操控一般是通过鼠标和键盘来完成的。鼠标在屏幕上有一个自己的形象,那就是一个箭头(当然你也可以调整这个图形为其他好玩的东西,it is your freedom)。

而键盘呢则一般表示为一个虚线的框,Python应用程序表示这个是键盘的”焦点“所在的地方。或者是编辑框中闪动的竖杠。这两点中有一个共同点,就是都有一个位置来确定要操作的对象。你点下鼠标的时候,你操作的就是鼠标的箭头尖端指向的那个空间,而键盘按下也是在其焦点所在的控件那儿放声。发生的是什么呢?

发生的过程从硬件层面到软件层面之后,最终是被操作系统接收。操作系统能够知道你是点击的是鼠标还是键盘,在什么一个地方点下的,而且按下的是左键还是右键。操作系统还知道当前窗口各处摆放的位置。综合各路的信息,操作系统就能够知道把这个”事件“作为”消息“发送给哪个窗口来处理。

从中应该能够明白什么叫事件,而消息呢则是一个C中的结构体,其中有几个field中间放了有关这个事件的信息,然后就像一封信一样从操作系统投递到了窗口所在的应用程序。

然后应用程序有一个事先注册的”窗口过程“,Python应用程序其实就是一个函数,用来接收这封“信”。其实就是接收到传过来的参数。然后再进行一些判断,作出一定的响应。这个就是所谓的事件驱动。在没有冗长的代码,和展示所有细节的情况下,如果你真的以前对这个过程一无所知,肯定会觉得非常茫然。这个一笔带过的叙述其实只是让你有一个感性的认识。#t#

其实在python中使用窗口根本不用管诸葛么多。基本上只是把自己要的窗口和控件,给一些位置的参数,一些文字的提示内容的参数就能把窗口摆好,显示出来。然后再通过代码告诉python,当“这个按钮按下的时候执行这个函数”,然后就能让窗口有响应。

最后记得给一个退出窗口的办法就一切OK了。Python应用程序其中能省的复杂度基本上都被库给隐藏掉了。付出的代价是慢一些,但是我就不相信你能感觉出来,除非你用的电脑连vcd都看不流畅。所以大可放心的享受这种便利。

责任编辑:chenqingxiang 来源: 博客园
相关推荐

2010-02-06 16:02:57

Android 应用程

2010-02-22 18:25:07

2010-02-03 18:06:42

Python语言

2009-12-17 14:45:37

Visual Stud

2010-01-06 16:02:53

2010-02-26 17:54:54

python

2010-02-05 16:28:07

Android

2010-01-13 18:30:18

CC++程序设计

2010-03-03 16:08:20

Android手机系统

2010-01-27 10:29:39

C++代码解析

2010-01-14 15:15:39

C++Test

2009-12-22 17:00:58

ADOMD.NET对象

2010-01-12 14:52:00

C++技术

2009-12-18 15:49:12

ADO.NET组件

2010-03-19 14:12:06

太网交换机

2010-02-04 14:27:11

2021-11-12 20:00:52

Linuxcowsay命令

2009-12-09 10:34:10

嵌入式Linux操作系

2010-01-08 10:41:56

JSON 数据

2009-12-17 14:01:44

Visual Stud
点赞
收藏

51CTO技术栈公众号