python学习笔记之11:图像用户界面

时间:2021-12-12 02:18:57

这里会介绍如何创建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,暂时也就只能分享到这里了。