wxpython 按钮控件如何实现运行和中断状态_python的GUI编程--wxpython学习(二)--基本控件和事件...

其实wxpython的控件非常简单,在你声明好的panel或者frame里面直接实例化就行了,然后设置几个通用的参数,比如:

parent=xxx

label=’xxx’

style=’xxx’

获取里面的值或者内容可以用GetValue()设置则是SetValue()。

为了省事,我把要学习的控件分为三个例子,如下图:

所以这里不一个个举例了,一个小技巧就是直接ctrl+鼠标左键进入源码阅读即可。

比如StaticText,直接查看init方法:

那么这几个就是可以指定的属性了。

直接上使用的实例:

StaticText TextCtrl和Button例子

class F_Mix00(wx.Frame):

''' 演示文本框,输入框和按钮的例子 '''

def __init__(self):

wx.Frame.__init__(self,parent=None,title=u'i am cloudhuan',size=(500,500),pos=(500,200))

mPanel = wx.Panel(parent=self)

mBoxSizer = wx.BoxSizer(orient=wx.HORIZONTAL)

mText = wx.StaticText(parent=mPanel,label=u'请输入姓名:')

mBoxSizer.Add(mText)

self.mEdit = wx.TextCtrl(parent=mPanel)

self.mEdit.SetFocus()

mBoxSizer.Add(self.mEdit,proportion=wx.EXPAND)

mBtn = wx.Button(parent=mPanel,label=u'确定')

mBtn.Bind(event=wx.EVT_BUTTON,handler=self.printBtn)

mBoxSizer.Add(mBtn)

mPanel.SetSizer(mBoxSizer)

mPanel.Fit()

def printBtn(self,event):

print self.mEdit.GetValue()

self.mEdit.Clear()

self.mEdit.SetFocus()

CheckBox RadioButton和RadioBox的例子

class F_Mix01(wx.Frame):

''' 演示checkbox radiobutton和radiobox '''

def __init__(self):

wx.Frame.__init__(self,parent=None,title=u'i am cloudhuan',size=(500,500),pos=(500,200))

mPanel = wx.Panel(parent=self)

mBox = wx.BoxSizer(orient=wx.VERTICAL)

#checkbox演示

mCheck00 = wx.CheckBox(parent=mPanel,label=u'深圳')

mBox.Add(mCheck00)

mCheck01 = wx.CheckBox(parent=mPanel,label=u'北京')

mBox.Add(mCheck01)

#radiobutton演示

mRbtn00 = wx.RadioButton(parent=mPanel,label=u'男',style=wx.RB_GROUP)

mRbtn01 = wx.RadioButton(parent=mPanel,label=u'女')

mBox.Add(mRbtn00)

mBox.Add(mRbtn01)

#radiobox演示

mRb = wx.RadioBox(parent=mPanel,label=u'测试在哪里',choices=[u'移动端测试',u'web端测试'],majorDimension=2,style=wx.RA_SPECIFY_ROWS)

mBox.Add(mRb)

mPanel.SetSizer(mBox)

mPanel.Fit()

这里要解释一下radiobox的参数:

choices:传入一个列表,用来展示数据

majorDimension:指明以某种形式展示多少数据

style:指定形式,行还是列,比如wx.RA_HORIZONTAL表示以水平方式展示majorDimension个数据

最后是

StaticBitmap的例子

class F_Bitmap(wx.Frame):

''' 演示图片 '''

def __init__(self):

wx.Frame.__init__(self,parent=None,title=u'i am cloudhuan',size=(500,500),pos=(500,200))

mPanel = wx.Panel(parent=self)

img = wx.Image('/home/cloudhuan/桌面/截图/tmp.png')

img = img.Scale(500,500)

mBitmap = wx.StaticBitmap(parent=mPanel,bitmap=wx.BitmapFromImage(img))

Image类负责把文件转为Image对象,然后调用Bitmap类的BitmapFromImage把Image对象转为bitmap对象,这里是静态定义,也可以通过方法setBitmap指定。

好了,那么基本控件参照例子应该比较好懂了,下面说说事件

事件

wxpython的事件是通过”绑定”的形式定义的,其实和android的setonxxxlistener一样一样的,这种绑定不单只基本控件,Frame和Panel都是支持的,比如鼠标点击,按钮点击等等。

有两种方式调用,一个是self.Bind()另一个是控件.Bind()推荐是后者啦。

Bind()的时候需要传入两个参数:

event:事件类型

handler:回调的函数

比如:

class EventTest(wx.Frame):

def __init__(self):

wx.Frame.__init__(self,parent=None,title=u'i am cloudhuan',size=(500,500),pos=(500,200))

self.Bind(event=wx.EVT_LEFT_DOWN, handler=self.receiveMouse)

def receiveMouse(self,event):

print event.x,event.y

运行起来是点击屏幕,然后输出坐标点在控制台,就不截图了,主要看代码:

self.Bind(event=wx.EVT_LEFT_DOWN, handler=self.receiveMouse)

self代表的是我自定义的Frame,event为EVT_LEFT_DOWN常量,表示监控鼠标左键动作,handler指定我要触发的函数。下面触发的函数定义为:

def receiveMouse(self,event):

print event.x,event.y

可以看到传入了一个event对象,这个是系统给我们的,表示了一系列信息,这一点和android一致。

常用的一些事件描述粘贴网上摘抄的:

来自这里 事件描述 EVT_SIZE 由于用户干预或由程序实现,当一个窗口大小发生改变时发送给窗口。 EVT_MOVE 由于用户干预或由程序实现,当一个窗口被移动时发送给窗口。 EVT_CLOSE 当一个框架被要求关闭时发送给框架。除非关闭是强制性的,否则可以调用event.Veto(true)来取消关闭。 EVT_PAINT 无论何时当窗口的一部分需要重绘时发送给窗口。 EVT_CHAR 当窗口拥有输入焦点时,每产生非修改性(Shift键等等)按键时发送。 EVT_IDLE 这个事件会当系统没有处理其它事件时定期的发送。 EVT_LEFT_DOWN 鼠标左键按下。 EVT_LEFT_UP 鼠标左键抬起。 EVT_LEFT_DCLICK 鼠标左键双击。 EVT_MOTION 鼠标在移动。 EVT_SCROLL 滚动条被操作。这个事件其实是一组事件的集合,如果需要可以被单独捕捉。 EVT_BUTTON 按钮被点击。 EVT_MENU 菜单被选中。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值