wxPython的事件处理
1 什么是事件
完成布局以后,接下来就是输入用户名和密码。当单击“确定”按钮时,自动化开发" href="http://www.kokojia.com/s70048/" target="_blank">自动化开发检验输入的用户名和密码是否正确,并输出相应的提示信息。当单击“取消”按钮时,消空已经输入的用户名和密码。要实现这样的功能,就需要使用wxPython的事件处理。
那么什么是事件呢?用户执行的动作就叫作事件(event) ,比如单击按钮,就是一个单击事件.
2 绑定事件
当发生一个事件时,需要让程序注意这些事件并且做出反应。这时,可以将函数绑定到所涉及事件可能发生的控件上。当事件发生时,前端开发函数就会被调用。利用控件的Bind()方法可以将事件处理函数绑定到给定的事件上。例如,为“确定”按钮添加一个单击事件,代码如下:
bt_confirm.Bind(wx.EVT_BUTTON,OnclickSubmit)
参数说明如下:
wx.EVT_ BUTTON: python全栈开发类型wx.EVT_ MOTION 产生于用户移动鼠标。类型Wx.ENTER _window和wx.LEAVE_ WINDOW产生于当鼠标进入或离开一个窗口控件。类型wx.EVT _MOUSEWHEEL被绑定到鼠标滚轮的活动。
OnclickSubmit: 方法名。事件发生时执行该方法。
[例]使用事件判断用户登录。在布局篇实例的基础上,分别为“确定”和“取消”按钮添加单击事件。当用户输入用户名和密码后,单击“确定”按钮,如果输入的用户 名为mr并且密码为 mrsoft,则弹出对话框提示 “登录成功” ,否则提示“用户名和密码不匹配”。当用户单击“取消”按钮时,清空用户输入的用户名和密码。关键代码如下:
#-*-coding:utf-8-*-
import wx
class MyFrame(wx.Frame):
def_init_(self,parent,id):
wx.Frame._init_(self,parent,id,'用户登录',size=(400,300))
#创建面板
panel=wx.Panel(self)
#创建 “确定”和 “取消”按钮,并绑定事件
self.bt_confirm=wx.Button(panel,label='确定')
self.bt_confirm.Bind(wx.EVT_BUTTON,self.OnclickSubmit)
self.bt_cancel=wx.Button(panel,label='取消')
self.bt_cancel.Bind(wx.EVT_BUTTON,self.OnclickCancel)
#...省略其余代码
def OnclickSubmit(self,event):
"""单击“确定”按钮,执行方法"""
message=""
username=self.text_user.GetValue() #获取输入的用户名
password=self.text_password.GetValue() #获取输入的秘码
if username==""or password=="" #判断用户名或密码是否为空
message='用户名或密码不能为空'
elif username=='mr'and password=='mrsoft': #用户名和密码正确
message='登录成功'
else:
message='用户名和密码不匹配' #用户名或密码错误
wx.MessageBox(message) #弹出提示框
def OnclickCancel(self,event):
"""单击取消按钮,执行方法"""
self.text_user.SetValue("") #清空输入的用户名
self.text_password.SetValue("") #清空输入的密码
if_name_=='_main_':
app=wx.App() #初始化应用
frame=MyFrame(parent=None,id=-1) #实例MyFrame类,并传递参数
frame.Show() #显示窗口
app.MainLoop() #调用主循环方法
上述代码中,分别使用bind()函数为bt_ confirm 和bt _cancel 绑定了单击事件,Django项目单击“确定”按钮时,执行OnclickSubmit()方法判断用户名和密码是否正确,然后使用wx.MessageBox()弹出提示框。单击“取消”按钮时,执行OnclickCancel()方法。用户名和密码正确运行结果如下图一所示,否则运行结果如下图二所示。