这里会介绍如何创建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. Swift - 高级运算符介绍

    除了基本运算符之外,Swift还支持位运算和位移运算,包括:   1,按位取反运算:操作符是 ~ 2,按位与运算:操作符是 & 3,按位或运算:操作符是 | 4,按位异或运算:操作符是 ^ 5 ...

  2. BAPI总的数据库提交和回滚

    BAPI事物中的数据提交和回滚必须通过调用SAP标准业务对象BAPI SERVICE(对象类型SAP0001)的BAPI方法bapiservic.transactioncommit和bapiservi ...

  3. 百度地图js版定位控件

    一 概述 百度地图在最新版已加入浏览器定位控件,个人认为应该是既高德地图更新了一个浏览器也能定位功能后,百度不甘落后自己简简单单,草草写了个这个功能的定位控件 GeolocationControl 这 ...

  4. Delphi的TService的輸入桌面切換(服务程序)(windows登录界面如何截图)(使用了OpenDesktop和GetThreadDesktop等API)

    dfm: object CopyDeskService: TCopyDeskService  OldCreateOrder = False  OnCreate = ServiceCreate  OnD ...

  5. Servlet API中文版

    基本类和接口 一.javax.servlet.Servlet接口 servlet抽象集是javax.servlet.Servlet接口,它规定了必须由Servlet类实现由servlet引擎识别和管理 ...

  6. HUD 1501 Zipper(记忆化 or DP)

    Problem Description Given three strings, you are to determine whether the third string can be formed ...

  7. hibernate学习(二)

    hibernate 单向一对多映射 一.数据表设计 数据库名:hibernate5 数据表: ①表名:CUSTOMERS 字段: CUSTOMER_ID  CUSTOMER_NAME ②表名:ORDE ...

  8. 简单的 "双缓冲" 绘图的例子(研究一下)

    所谓双缓冲就是先画到内存画布(如: TBitmap), 然后再转帖到目的地. 譬如下面小程序: procedure TForm1.FormCreate(Sender: TObject); begin ...

  9. AWS(0) - Amazon Web Services

    Computer EC2 – Virtual Servers in the Cloud EC2 Container Service – Run and Manage Docker Containers ...

  10. c#超时锁定

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...