• python_tkinter事件


    1.事件绑定函数(3个)

      组件.bind('事件类型',事件函数)

        为一个组件绑定一个操作

      组件.bind_class('组件类型','事件类型',事件函数)

        为一个类组件绑定一个操作

      组件.bind_all('事件类型',事件函数)

        为所有组件绑定一个操作(所有操作都会当作对主界面的操作)

    2.事件类型

     

     

     3.事件对象

     ################事件绑定的案例1:

                鼠标进入组件变红,离开组件变白

    # 单行文本输入框
    entry = tkinter.Entry(root)
    entry.pack()
    # 事件函数
    def changered(eventobj):
        # 通过事件对象获取得到组件
        eventobj.widget['bg'] = 'red'#鼠标进入组件变红
    def wdc(eventobj):
        eventobj.widget['bg'] = 'white'#鼠标离开组件变白
    # 事件绑定
    entry.bind('<Enter>',changered)
    entry.bind('<Leave>',wdc)

    注意:通过绑定函数操作,对应的事件函数,必须有形参接受事件对象。

       #事件函数必须在绑定之前定义

    ################事件绑定的案例2:

                  键盘快捷键触发事件:按快捷键改变窗口背景色

    import tkinter
    
    # 创建主窗口
    root = tkinter.Tk()
    # 设置窗口大小
    root.minsize(300,200)
    
    # 变红色
    def changer(eventobj):
        eventobj.widget['bg'] = 'red'
    
    # 按Ctrl + r窗口变红色:两条命令 R和r都行
    root.bind('<Control-KeyPress-r>',changer)
    root.bind('<Control-KeyPress-R>',changer)
    
    # 加入消息循环
    root.mainloop()

    ################事件绑定的案例3:(为一类组件绑定事件)

     

    import tkinter
    
    # 创建主窗口
    root = tkinter.Tk()
    # 设置窗口大小
    root.minsize(300,200)
    
    # 按钮1
    btn1 = tkinter.Button(root,text = '1')
    btn1.place(x = 20,y = 20,width = 40,height = 40)
    # 按钮2
    btn2 = tkinter.Button(root,text = '2')
    btn2.place(x = 80,y = 20,width = 40,height = 40)
    # 按钮3
    btn3 = tkinter.Button(root,text = '3')
    btn3.place(x = 140,y = 20,width = 40,height = 40)
    # 按钮4
    btn4 = tkinter.Button(root,text = '4')
    btn4.place(x = 20,y = 80,width = 40,height = 40)
    # 按钮5
    btn5 = tkinter.Button(root,text = '5')
    btn5.place(x = 80,y = 80,width = 40,height = 40)
    # 按钮6
    btn6 = tkinter.Button(root,text = '6')
    btn6.place(x = 140,y = 80,width = 40,height = 40)
    
    def changebg(wdc):
        # 鼠标放到按钮上按钮变红
        wdc.widget['bg'] = 'red'
    def changebg1(wdc):
        # 鼠标离开按钮上按钮变白
        wdc.widget['bg'] = 'white'
    # 绑定按钮鼠标进入事件
    btn1.bind_class('Button','<Enter>',changebg)
    btn1.bind_class('Button','<Leave>',changebg1)
    
    
    
    # 加入消息循环
    root.mainloop()

    ################事件绑定的案例4:(为所有组件绑定事件)

                鼠标点击所有组件,Entry组件背景颜色都会变红

    import tkinter
    
    # 创建主窗口
    root = tkinter.Tk()
    # 设置窗口大小
    root.minsize(300,200)
    
    # 按钮
    btn1 = tkinter.Button(root,text = '###############')
    btn1.pack()
    # 输入框
    entry = tkinter.Entry(root)
    entry.pack()
    # 多行输入框
    text = tkinter.Text(root,width = 20,height = 5)
    text.pack()
    # 函数
    def changeentry(e):
        # 鼠标点击任意组件,Entry组件都会变红
        entry['bg'] = 'red'
    
    # 事件绑定
    btn1.bind_all('<Button-1>',changeentry)
    
    # 加入消息循环
    root.mainloop()
  • 相关阅读:
    程序的机器级表示(一)
    virtual memory(1)
    Python定义参数数量可变的method的问题
    存储器结构层次(四)
    CAShapeLayer
    cell
    远程服务器推送
    keyboad
    search搜索
    Cocoopod
  • 原文地址:https://www.cnblogs.com/wangdianchao/p/11555130.html
Copyright © 2020-2023  润新知