wxpython 学习笔记 第一天


Posted in Python onFebruary 09, 2009

它是Python语言对流行的wxWidgets跨平台GUI工具库的绑定。而wxWidgets是用C++语言写成的。

和Python语言与wxWidgets GUI工具库一样,wxPython是开源软件。这意味着任何人都可以免费地使用它并且可以查看和修改它的源代码,或者贡献补丁,增加功能。

wxPython是跨平台的。这意味着同一个程序可以不经修改地在多种平台上运行。现今支持的平台有:32位微软Windows操作系统、大多数Unix或类Unix系统、苹果Mac OS X。

由于使用Python作为编程语言,wxPython编写简单、易于理解。
1,导入 wxpython 库
import wx
2,建立窗体构造类
class 名字(wx.Frame):
def __init__(self, parent, id):
wx.Frame.__init__(self, parent, id, '工具',size=(300, 200))
3,建立 面板 panel = wx.Panel(self)
设置面板背景
panel.SetBackgroundColour('White')
为状态显示栏,显示在面板最下面
wx.Frame.CreateStatusBar()
#这个为工具菜单,显示在窗体上面,工具菜单一般是有图标的菜单
wx.Frame.CreateToolBar()
#为菜单也是显示在窗体上面
wx.MenuBar()
#菜单栏上面的具体菜单
wx.Menu()

关于事件
wx.Frame.Bind
参数一,绑定的时间类型
参数二,触发的函数
参数三,确定那个窗体上的id触发

关于图片处理
#获取图片对象
image = wx.Image('yuanxiao.jpg', wx.BITMAP_TYPE_JPEG)
#取得位图流
temp = image.ConvertToBitmap()

关于具体菜单栏
Append方法添加菜单项
参数一,菜单项唯一id
参数二,菜单项名称
参数三,选择该菜单时的状态栏显示文字

AppendMenu方法为添加下一级菜单
参数一,菜单项唯一id
参数二,菜单项名称
参数三,具体的菜单项对象

关于窗体的构造函数
wx.Frame(parent, id=-1, title="", pos=wx.DefaultPosition,
size=wx.DefaultSize, style=wx.DEFAULT_FRAME_STYLE,
name="frame")

我们在别的窗口部件的构造器中将会看到类似的参数。参数的说明如下:

parent:框架的父窗口。对于顶级窗口,这个值是None。框架随其父窗口的销毁而销毁。取决于平台,框架可被限制只出现在父窗口的顶部。在多文档界面的情况下,子窗口被限制为只能在父窗口中移动和缩放。

id:关于新窗口的wxPython ID号。你可以明确地传递一个。或传递-1,这将导致wxPython自动生成一个新的ID。

title:窗口的标题。

pos:一个wx.Point对象,它指定这个新窗口的左上角在屏幕中的位置。在图形用户界面程序中,通常(0,0)是显示器的左上角。这个默认的(-1,-1)将让系统决定窗口的位置。

size:一个wx.Size对象,它指定这个窗口的初始尺寸。这个默认的(-1,-1)将让系统决定窗口的初始尺寸。

style:指定窗口的类型的常量。你可以使用或运算来组合它们。

name:框架的内在的名字。以后你可以使用它来寻找这个窗口。

记住,这些参数将被传递给父类的构造器方法:wx.Frame.__init__()。

创建wx.Frame子类的方法如下所示:

class MyFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, "My Friendly Window",
(100, 100), (100, 100))

关于框架的一些属性
frame.Show(False) # 使框架不可见.
frame.Show(True) # True是默认值,使框架可见.
frame.Hide() # 等同于frame.Show(False)

关闭窗体
wx.Exit()

实例程序

#设置python使用的编码
#coding=utf-8
#加载wx库
import wx
#框架类
class ToolbarFrame(wx.Frame):
def __init__(self, parent, id):#构造函数
#构造框架
wx.Frame.__init__(self, parent, id, '工具',size=(300, 200))
#填充面板
panel = wx.Panel(self)
#设置面板背景颜色
panel.SetBackgroundColour('White')

#建立状态栏
statusBar = self.CreateStatusBar()
#建立工具栏
toolbar = self.CreateToolBar()
#取得工具栏图标对象
image = wx.Image('yuanxiao.jpg', wx.BITMAP_TYPE_JPEG)
#取得图标位图流
temp = image.ConvertToBitmap()
#建立工具栏
toolbar.AddSimpleTool(wx.NewId(),temp, "New", "Long help for 'New'")
#设置工具栏位置
toolbar.Realize()
#建立菜单栏
menuBar = wx.MenuBar()
#建立菜单项
menu1 = wx.Menu()
#添加下级菜单项
menu1.Append(wx.NewId(), "C&ut", "Copy in status bar")
#设置菜单项里的分割线
menu1.AppendSeparator()

sm = wx.Menu()
sm.Append(-1,'测试1');
sm.Append(-1,'测试2');
#把二级菜单项添加到一级菜单
menu1.AppendMenu(-1,'下级',sm);
#把菜单项添加单菜单栏里
menuBar.Append(menu1, "文件(&F)")

menu2 = wx.Menu()
nid = wx.NewId()
menu2.Append(nid, "&Copy", "Copy in status bar")
#事件绑定
self.Bind(wx.EVT_MENU, self.onQuit, id=nid)

menu2.Append(wx.NewId(), "C&ut", "")
menu2.Append(wx.NewId(), "&Paste", "")
menu2.AppendSeparator()
menu2.Append(wx.NewId(), "&Options...", "Display Options")
menuBar.Append(menu2, "&Edit")
#设置菜单栏展示
self.SetMenuBar(menuBar)
#触发的事件
def onQuit(self, event):
#弹出框
dlg = wx.MessageDialog(None, 'Is this the coolest thing ever!','MessageDialog', wx.YES_NO | wx.ICON_QUESTION)
result = dlg.ShowModal()
dlg.Destroy()

#执行
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = ToolbarFrame(parent=None, id=-1)
frame.Show()
app.MainLoop()

开源项目介绍
http://onlypython.group.javaeye.com/group/blog/309552
讲解开发
http://rainytooo.javaeye.com/blog/150228
wxPython in Action 中文文档
http://www.pythontik.com/blog/article.asp?id=184
作者 叁石 sanshi0815

Python 相关文章推荐
用python找出那些被“标记”的照片
Apr 20 Python
python+django加载静态网页模板解析
Dec 12 Python
下载python中Crypto库报错:ModuleNotFoundError: No module named ‘Crypto’的解决
Apr 23 Python
python控制windows剪贴板,向剪贴板中写入图片的实例
May 31 Python
TensorFlow 合并/连接数组的方法
Jul 27 Python
详解Numpy中的广播原则/机制
Sep 20 Python
用python代码将tiff图片存储到jpg的方法
Dec 04 Python
python判断字符串或者集合是否为空的实例
Jan 23 Python
Django模型序列化返回自然主键值示例代码
Jun 12 Python
python笔记_将循环内容在一行输出的方法
Aug 08 Python
python Django框架实现web端分页呈现数据
Oct 31 Python
Python中pass的作用与使用教程
Nov 13 Python
python 输出一个两行字符的变量
Feb 05 #Python
Python 调用DLL操作抄表机
Jan 12 #Python
Python MD5文件生成码
Jan 12 #Python
Python Mysql数据库操作 Perl操作Mysql数据库
Jan 12 #Python
Python 学习笔记
Dec 27 #Python
python3.0 字典key排序
Dec 24 #Python
python 文件与目录操作
Dec 24 #Python
You might like
PHP程序员不应该忽略的3点
2015/10/09 PHP
PHP操作Postgresql封装类与应用完整实例
2018/04/24 PHP
TP5框架使用QueryList采集框架爬小说操作示例
2020/03/26 PHP
脚本吧 - 幻宇工作室用到js,超强推荐expand.js
2006/12/23 Javascript
JavaScript全排列的六种算法 具体实现
2013/06/29 Javascript
JS实现点击按钮控制Div变宽、增高及调整背景色的方法
2015/08/05 Javascript
精通JavaScript的this关键字
2020/05/28 Javascript
JS添加删除DIV的简单实例
2016/07/08 Javascript
jQuery制作图片旋转效果
2017/02/02 Javascript
微信小程序实战之自定义toast(6)
2017/04/18 Javascript
js Date()日期函数浏览器兼容问题解决方法
2017/09/12 Javascript
微信小程序(订阅消息)功能
2019/10/25 Javascript
分享JS表单验证源码(带错误提示及密码等级)
2020/01/05 Javascript
[46:20]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS BO3 第二场 1月22日
2021/03/11 DOTA
Python3中的2to3转换工具使用示例
2015/06/12 Python
tensorflow实现图像的裁剪和填充方法
2018/07/27 Python
Python读取mat文件,并保存为pickle格式的方法
2018/10/23 Python
django如何通过类视图使用装饰器
2019/07/24 Python
Django 解决distinct无法去除重复数据的问题
2020/05/20 Python
Python 实现微信自动回复的方法
2020/09/11 Python
Python爬虫之Selenium库的使用方法
2021/01/03 Python
CSS3 实现侧边栏展开收起动画
2014/12/22 HTML / CSS
HTML5+CSS3应用详解
2014/02/24 HTML / CSS
有750多个顶级品牌的瑞士时尚在线:ABOUT YOU
2017/01/04 全球购物
阿迪达斯印度官方商城:adidas India
2017/03/26 全球购物
The Hut美国/加拿大:英国领先的豪华在线百货商店
2019/03/26 全球购物
澳大利亚实惠时尚女装商店:Katies
2019/06/16 全球购物
毕业生造价工程师求职信
2013/10/17 职场文书
装修五一活动策划案
2014/01/23 职场文书
淘宝客服自我总结鉴定
2014/01/25 职场文书
2014年招生工作总结
2014/11/26 职场文书
农村结婚典礼主持词
2015/06/29 职场文书
中国梦宣传标语口号
2015/12/26 职场文书
Django实现drf搜索过滤和排序过滤
2021/06/21 Python
唤醒紫霞仙子,携手再游三界!大话手游X《大话西游》电影合作专属剧情任务
2022/04/03 其他游戏
Java8 CompletableFuture 异步回调
2022/04/28 Java/Android