这里会介绍如何创建python程序的图像用户界面(GUI),也就是那些带有按钮和文本框的窗口等。目前支持python的所谓“GUI工具包”的有很多,本文简要介绍最成熟的跨平台pythonGUI工具包---wxPython。

一. 下载和安装wxPython

1.1 下载

访问下载页面:http://wxpython.org/download.php即可。

要注意以下几点:

1. 如果是windows系统,应该下载预建的二进制版本,可以选择支持Unicode或不支持Unicode,除非一定要用到Unicode,否则2个版本的区别不大;

2. 确保所选择的二进制版本要对应Python版本,比如python2.3对应的wxpython不能用于python2.4;

3. 如果没有任何版本适合硬件或操作系统,可以下载源代码发布版;

4. 在下载了wxpyhton之后,强烈建议下载演示版本(demo,它需要独立安装),它包含文档,示例程序和非常详细的演示分布。

1.2 安装

安装过程很简单,都是自动完成的,一直点“continue”就好了。

安装完毕之后,建议重新打开IDLE窗口,否则验证安装是否成功时会一直提示如下错误:

>>> import wx
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named wx

ps:LZ我就是在安装完之后,忘记重启IDLE窗口,导致import wx时一直提示这个错误,以为安装失败了。

导入wx模块成功的话,不会有其他提示。如下是我的wxPython安装目录,请拖到最后查看,最后一个目录为:'C:\\Python27\\lib\\site-packages\\wx-2.8-msw-unicode':

>>> import sys
>>> print sys.path
['D:/python', 'C:\\Python27\\Lib\\idlelib', 'C:\\Python27\\Lib\\site-packages\\wx-2.8-msw-unicode\\wxPython', 'C:\\Python27\\python27.zip', 'C:\\Python27\\DLLs', 'C:\\Python27\\lib', 'C:\\Python27\\lib\\plat-win', 'C:\\Python27\\lib\\lib-tk', 'C:\\Python27', 'C:\\Python27\\lib\\site-packages', 'C:\\Python27\\lib\\site-packages\\wx-2.8-msw-unicode']
>>> import wx
>>>

正如前面一章《模块和包》中讲到的,sys.path中的内容就是告诉解释器去哪里找模块。现在wx在sys.path路径下,证明wx已经被python识别为一个模块,可以正常使用了。

二.使用

在学习的过程中,我发现一个很好的能够学习wxPython的网站,跟大家分享一下:http://wiki.woodpecker.org.cn/moin/WxPythonInAction

这里介绍里面讲到的一个最基本的wxPython程序:

import wx  #导入wxPython包;(必须的步骤)

class Frame(wx.Frame):  # 定义一个wx.Frame的子类,以便我们更容易控制框架的内容和外观;
def __init__(self,image,parent = None,id = -1,
pos = wx.DefaultPosition,
title = 'Hello,wxPython!'): #给框架的构造器增加一个图像参数,后面的应用程序会提供;
#下面是显示图像的步骤:
temp = image.ConvertToBitmap()
size = temp.GetWidth(),temp.GetHeight()
wx.Frame.__init__(self, parent, id, title, pos, size)
self.bmp = wx.StaticBitmap(parent = self,bitmap = temp) class App(wx.App): #定义一个带有OnInit()方法的wx.App的子类,这是wxpython应用程序最基本的要求;(必须的步骤)
def OnInit(self): (必须的步骤)
#下面是对图像的处理:
image = wx.Image('D:\\python\\wxpython.jpg',wx.BITMAP_TYPE_JPEG)
self.frame = Frame(image)
self.frame.Show()
self.SetTopWindow(self.frame)
return True myapp = App() #创建一个应用程序类的实例;(必须的步骤)
myapp.MainLoop() #进入这个应用程序的主事件循环;(必须的步骤)

ps:LZ我也才入门wxpython,暂时也就只能分享到这里了。

python学习笔记之11:图像用户界面的更多相关文章

  1. Deep learning with Python 学习笔记(11)

    总结 机器学习(machine learning)是人工智能的一个特殊子领域,其目标是仅靠观察训练数据来自动开发程序[即模型(model)].将数据转换为程序的这个过程叫作学习(learning) 深 ...

  2. python学习笔记(11)--文件与数据格式化

    文件的概念: 文件是数据的抽象和集合,是存储在辅助存储器上的数据序列,文件是数据存储的一种形式,文件的展现形态,文本文件和二进制文件. 文本文件输出: f.txt文件保存:“我是中国人” >&g ...

  3. python学习笔记(11)--爬虫下载漫画图片

    说明: 1. 某本子网站爬虫,现在只实现了扒取一页,已经凌晨两点了,又饿又困,先睡觉,明天再写总结吧! 2. 我是明天,我来写总结了! 3. 这个网站的结构是这样的: 主页: 主页-第1页-漫画1封面 ...

  4. python学习笔记(11)文件操作

    一.读文件 读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直 ...

  5. python学习笔记(11)--测验3: Python基础语法(下) (第7周)

    斐波那契数列计算 B 描述 斐波那契数列如下: F(0) = 0, F(1) = 1 F(n) = F(n-1) + F(n-2) 编写一个计算斐波那契数列的函数,采用递归方式,输出不超过n的所有斐波 ...

  6. python学习笔记(11)--词云

    中分词库  jieba 词云 wordcloud import jieba import wordcloud f = open("新时代中国特色社会主义.txt", "r ...

  7. python学习笔记(11)--数据组织的维度

    数据的操作周期 存储  -- 表示 -- 操作 一维数据表示 如果数据有序,可以使用列表[]:如果数据没有顺序,可以使用集合{} 一维数组存储 存储方式一:空格分隔 ,使用一个或多个空格分隔进行分隔, ...

  8. Deep learning with Python 学习笔记(10)

    生成式深度学习 机器学习模型能够对图像.音乐和故事的统计潜在空间(latent space)进行学习,然后从这个空间中采样(sample),创造出与模型在训练数据中所见到的艺术作品具有相似特征的新作品 ...

  9. Python学习笔记(15)- os\os.path 操作文件

    程序1 编写一个程序,统计当前目录下每个文件类型的文件数,程序实现如图: import os def countfile(path): dict1 = {} # 定义一个字典 all_files = ...

随机推荐

  1. net析构函数对垃圾回收的影响

    net析构函数对垃圾回收的影响 之前忘了说了 代码都是在Release模式下运行的,现在补充上. 这里说析构函数,其实并不准确,应该叫Finalize函数,Finalize函数形式上和c++的析构函数 ...

  2. jquery easyui Accordion的使用

    <html> <head> <script src="jquery-easyui/jquery.min.js"></script> ...

  3. 学习笔记之TCP/IP协议分层与OSI參考模型

    1.协议的分层      ISO在制定标准化OSI之前,对网络体系结构相关的问题进行了充分的讨论, 终于提出了作为通信协议设计指标的OSI參考模型.这一模型将通信协议中必要 的功能分成了7层.通过这些 ...

  4. POJ 1862 &amp; ZOJ 1543 Stripies(贪心 | 优先队列)

    题目链接: PKU:http://poj.org/problem?id=1862 ZJU:http://acm.zju.edu.cn/onlinejudge/showProblem.do?proble ...

  5. H-index因素

    Problem Description Paper quality and quantity have long been used to measure a research's scientifi ...

  6. CorePlot学习

    阅读这篇文章,指出它在国外    原文地址:https://github.com/core-plot/core-plot/wiki/High-Level-Design-Overview 强烈推荐阅读该 ...

  7. STL 之 queue、priority_queue 源代码剖析

    /* * Copyright (c) 1994 * Hewlett-Packard Company * * Permission to use, copy, modify, distribute an ...

  8. poj2299--B - Ultra-QuickSort(线段树,离散化)

    Ultra-QuickSort Time Limit: 7000MS   Memory Limit: 65536K Total Submissions: 41215   Accepted: 14915 ...

  9. ssh登录过程详细介绍

    服务器端和客户端就取得了相同的会话密钥和会话 ID .对于后续传输的数据,两端都会使用会话密钥进行加密和解密,保证了数据传送的安全. http://blog.csdn.net/lhq9220/arti ...

  10. 一致性哈希算法(consistent hashing)样例+測试。

    一个简单的consistent hashing的样例,非常easy理解. 首先有一个设备类,定义了机器名和ip: public class Cache { public String name; pu ...