wxpython 学习笔记 第一天

本文详细介绍使用wxPython库构建GUI应用程序的过程,包括窗体构造、菜单栏与工具栏的创建、事件绑定及图片处理等内容,并提供了一个完整的示例程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
mail sanshi0815@tom.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值