自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm=1001.2014.3001.5501
1 什么是事件
完成布局以后,接下来就是输入用户名和密码。当单击“确定”按钮时,检验输入的用户名和密码是否正确,并输出相应的提示信息。当单击“取消”按钮时,清空已经输入的用户名和密码。要实现这样的功能,就需要使用wxPython的事件处理。
那么,什么是事件呢?用户执行的动作就叫作事件(event)。比如单击按钮,就是一个单击事件。
2 绑定事件
当发生一个事件时,需要让程序注意这些事件并且做出反应。这时,可以将函数绑定到所涉及事件可能发生的控件上。当事件发生时,函数就会被调用。利用控件的Bind()方法可以将事件处理函数绑定到给定的事件上。例如,为“确定”按钮添加一个单击事件,代码如下:
bt_confirm.Bind(wx.EVT_BUTTON,OnclickSubmit)
参数说明:
l wx.EVT_BUTTON:事件类型为按钮类型。在wxPython中有很多wx.EVT_开头的事件类型,例如,类型wx.EVT_MOTION产生于用户移动鼠标,类型wx.ENTER_WINDOW和wx.LEAVE_WINDOW产生于当鼠标进入或离开一个窗口控件,类型wx.EVT_MOUSEWHEEL被绑定到鼠标滚轮的活动。
l OnclickSubmit:方法名。事件发生时执行该方法。
实例05 使用事件判断用户登录
在实例04的基础上,分别为“确定”和“取消”按钮添加单击事件。当用户输入用户名和密码后,单击“确定”按钮,如果输入的用户名为“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绑定了单击事件,单击“确定”按钮时,执行OnclickSubmit()方法判断用户名和密码是否正确,然后使用wx.MessageBox()弹出提示框。单击“取消”按钮时,执行OnclickCancel()方法。用户名和密码正确运行结果如图12,否则运行结果如图13所示。
图12 用户名和密码正确
图13 用户名或密码错误