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()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM