首頁 > 軟體

python_tkinter事件型別詳情

2022-03-20 13:00:56

1.事件繫結函數

事件繫結函數有三個如下:       

元件.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()

到此這篇關於python_tkinter事件型別詳情的文章就介紹到這了,更多相關python_tkinter事件內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com