事件处理

自学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:方法名。事件发生时执行该方法。

图标 (35)

  实例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  用户名或密码错误

相关推荐

  1. Vue - 事件处理详解

    2024-06-13 09:00:02       55 阅读
  2. vue3--事件处理

    2024-06-13 09:00:02       42 阅读
  3. React——关于事件处理

    2024-06-13 09:00:02       44 阅读
  4. vue 事件处理

    2024-06-13 09:00:02       40 阅读
  5. flink 事件处理 CEP

    2024-06-13 09:00:02       26 阅读
  6. Vue2事件处理

    2024-06-13 09:00:02       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-13 09:00:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-13 09:00:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-13 09:00:02       82 阅读
  4. Python语言-面向对象

    2024-06-13 09:00:02       91 阅读

热门阅读

  1. 联想测开一面(电话面试)笔试60%

    2024-06-13 09:00:02       34 阅读
  2. 常用Object的方法

    2024-06-13 09:00:02       22 阅读
  3. (32)ADC接口--->(007)FPGA实现AD7606接口

    2024-06-13 09:00:02       32 阅读
  4. vim 显示行号

    2024-06-13 09:00:02       23 阅读
  5. 短剧app系统开发(对接广告联盟)源码搭建

    2024-06-13 09:00:02       32 阅读
  6. 加密算法:RSA非对称加密算法

    2024-06-13 09:00:02       24 阅读
  7. 【HTML】格式化文本 pre 标签

    2024-06-13 09:00:02       19 阅读
  8. Kafka 之 KRaft —— ZooKeeper 到 KRaft 的迁移

    2024-06-13 09:00:02       28 阅读
  9. k-means聚类模型的优缺点

    2024-06-13 09:00:02       29 阅读
  10. MATLAB神经网络---regressionLayer回归输出层

    2024-06-13 09:00:02       40 阅读