wxpython 控件_wxPython Button控件

wxPython类库提供不同类型的按钮。有一个简单的、传统的按钮,wx.Button类对象带有一些文本作为其标题。 两状态的按钮也可以,它被命名为wx.ToggleButton。其按下或消沉状态可通过事件处理程序函数来识别。

另一种类型的按钮,wx.BitmapButton显示位图(图片)作为它的图标。

构造wx.Button类和wx.ToggleButton类使用以下参数 -

Wx.Button(parent, id, label, pos, size, style)

这些是wx.Button类的一些重要方法-

S.N.

方法和说明

1

SetLabel()

编程设置按钮的标题

2

GetLabel()

返回按钮的标题

3

SetDefault()

按钮设置为默认顶层窗口。模拟click事件按下回车键

wx.ToggleButton类的两种重要的方法是 -

S.N.

方法和说明

1

GetValue()

Returns the state of toggle button (on/off)

2

SetValue()

Sets the state of button programmatically

为了创建位图按钮,首先,位图对象需要被构建图像文件出来。

wx.Bitmap类下面是最常用的构造函数 -

Wx.Bitmap(fiiename, wx.BITMAP_TYPE)

一些预定义的位图类型常量是 -

wx.BITMAP_TYPE_BMP

wx.BITMAP_TYPE_ICO

wx.BITMAP_TYPE_CUR

wx.BITMAP_TYPE_TIFF

wx.BITMAP_TYPE_TIF

wx.BITMAP_TYPE_GIF

wx.BITMAP_TYPE_PNG

wx.BITMAP_TYPE_JPEG

wx.BITMAP_TYPE_PCX

wx.BITMAP_TYPE_ICON

wx.BITMAP_TYPE_ANY

位图(bitmap)对象作为参数wx.BitmapButton类的构造函数中的一个。

Wx.BitmapButton(parent, id, bitmap, pos, size, style)

在某些操作系统平台上,位图按钮可以显示位图和标签。 SetLabel()方法用于指定标题。在其他平台上,它作为一个内部的标签。正常的按钮,以及位图按钮发出wx.CommandEvent。 EVT_BUTTON绑定器关联一个函数来做处理。

另一方面切换按钮使用wx.TOGGLEBUTTON绑定器来处理事件。

在下面的例子中,所有三种类型的按钮被放置在面板的垂直框大小测定器。

使用语句创建简单的按钮对象 -

self.btn = wx.Button(panel, -1, "click Me")

切换按钮使用下面的语句构造-

self.tbtn = wx.ToggleButton(panel , -1, "click to on")

这些按钮加入到使用以下语句垂直大小测定器 -

vbox.Add(self.btn,0,wx.ALIGN_CENTER)

vbox.Add(self.tbtn,0,wx.EXPAND|wx.ALIGN_CENTER)

注 - 由于wx.EXPAND标记时,切换按钮占据着帧的整个宽度。

使用EVT_BUTTON和EVT_TOGGLEBUTTON绑定器使它们各自相关联处理程序。

self.btn.Bind(wx.EVT_BUTTON,self.OnClicked)

self.tbtn.Bind(wx.EVT_TOGGLEBUTTON,self.OnToggle)

三个位图按钮添加到一个横向box大小测定器。这些按钮显示图标,作为它们的标题。

bmp = wx.Bitmap("NEW.BMP", wx.BITMAP_TYPE_BMP)

self.bmpbtn = wx.BitmapButton(panel, id = wx.ID_ANY, bitmap = bmp,

size = (bmp.GetWidth()+10, bmp.GetHeight()+10))

bmp1 = wx.Bitmap("OPEN.BMP", wx.BITMAP_TYPE_BMP)

self.bmpbtn1 = wx.BitmapButton(panel, id = wx.ID_ANY, bitmap = bmp1,

size = (bmp.GetWidth()+10, bmp.GetHeight()+10))

bmp2 = wx.Bitmap("SAVE.BMP", wx.BITMAP_TYPE_BMP)

self.bmpbtn2 = wx.BitmapButton(panel, id = wx.ID_ANY, bitmap = bmp2,

size = (bmp.GetWidth()+10, bmp.GetHeight()+10))

这三个按钮的点击事件是针对OnClicked()方法。

self.bmpbtn.Bind(wx.EVT_BUTTON, self.OnClicked)

self.bmpbtn1.Bind(wx.EVT_BUTTON, self.OnClicked)

self.bmpbtn2.Bind(wx.EVT_BUTTON, self.OnClicked)

这些按钮的内部标签分别设置为新建,打开和保存。

OnClicked()事件处理函数检索源按钮的标签,从而导致click事件。这种标签打印到控制台上。

def OnClicked(self, event):

btn = event.GetEventObject().GetLabel()

print "Label of pressed button = ",btn

点击切换按钮时OnToggle()触发事件处理程序。其状态由GetValue()方法读取,因此按钮的标题被设置。

def OnToggle(self,event):

state = event.GetEventObject().GetValue()

if state == True:

print "off"

event.GetEventObject().SetLabel("click to off")

else:

print "on"

event.GetEventObject().SetLabel("click to on")

完整的代码列表如下 -

import wx

class Mywin(wx.Frame):

def __init__(self, parent, title):

super(Mywin, self).__init__(parent, title = title,size = (200,150))

panel = wx.Panel(self)

vbox = wx.BoxSizer(wx.VERTICAL)

self.btn = wx.Button(panel,-1,"click Me")

vbox.Add(self.btn,0,wx.ALIGN_CENTER)

self.btn.Bind(wx.EVT_BUTTON,self.OnClicked)

self.tbtn = wx.ToggleButton(panel , -1, "click to on")

vbox.Add(self.tbtn,0,wx.EXPAND|wx.ALIGN_CENTER)

self.tbtn.Bind(wx.EVT_TOGGLEBUTTON,self.OnToggle)

hbox = wx.BoxSizer(wx.HORIZONTAL)

bmp = wx.Bitmap("NEW.BMP", wx.BITMAP_TYPE_BMP)

self.bmpbtn = wx.BitmapButton(panel, id = wx.ID_ANY, bitmap = bmp,

size = (bmp.GetWidth()+10, bmp.GetHeight()+10))

hbox.Add(self.bmpbtn,0,wx.ALIGN_CENTER)

self.bmpbtn.Bind(wx.EVT_BUTTON,self.OnClicked)

self.bmpbtn.SetLabel("NEW")

bmp1 = wx.Bitmap("OPEN.BMP", wx.BITMAP_TYPE_BMP)

self.bmpbtn1 = wx.BitmapButton(panel, id = wx.ID_ANY, bitmap = bmp1,

size = (bmp.GetWidth()+10, bmp.GetHeight()+10))

hbox.Add(self.bmpbtn1,0,wx.ALIGN_CENTER)

self.bmpbtn1.Bind(wx.EVT_BUTTON,self.OnClicked)

self.bmpbtn1.SetLabel("OPEN")

bmp2 = wx.Bitmap("SAVE.BMP", wx.BITMAP_TYPE_BMP)

self.bmpbtn2 = wx.BitmapButton(panel, id = wx.ID_ANY, bitmap = bmp2,

size = (bmp.GetWidth()+10, bmp.GetHeight()+10))

hbox.Add(self.bmpbtn2,0,wx.ALIGN_CENTER)

self.bmpbtn2.Bind(wx.EVT_BUTTON,self.OnClicked)

self.bmpbtn2.SetLabel("SAVE")

vbox.Add(hbox,1,wx.ALIGN_CENTER)

panel.SetSizer(vbox)

self.Centre()

self.Show()

self.Fit()

def OnClicked(self, event):

btn = event.GetEventObject().GetLabel()

print "Label of pressed button = ",btn

def OnToggle(self,event):

state = event.GetEventObject().GetValue()

if state == True:

print "Toggle button state off"

event.GetEventObject().SetLabel("click to off")

else:

print " Toggle button state on"

event.GetEventObject().SetLabel("click to on")

app = wx.App()

Mywin(None, 'Button Demo - www.yiibai.com')

app.MainLoop()

上面的代码产生下面的输出 -

Label of pressed button = click Me

Toggle button state off

Toggle button state on

Label of pressed button = NEW

Label of pressed button = OPEN

Label of pressed button = SAVE

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值