Tkinter教程之Event篇(3)

來源:互聯網
上載者:User
'''Tkinter教程之Event篇(3)'''
'''11.兩個事件同時綁定到一個控制項'''
# -*- coding: cp936 -*-
# bind:將事件與處理函數
# 將兩個事件綁定為同一個組件
# 為root綁定兩個事件
from Tkinter import *
root = Tk()
# Key事件處理函數
def printEvent(event):
    print '<Key>',event.keycode
# Return事件處理函數
def printReturn(event):
    print '<Return>',event.keycode
root.bind('<Key>',printEvent)
root.bind('<Return>',printReturn)

root.mainloop()
# 當按鍵除了Return之外,都是由printEvent來處理
# 當按鍵為Return時,由printReturn來處理,即由最“近”的那個事件處理。
'''12.為一個instance綁定一個事件。'''
# bind:綁定instance的事件處理函數
# -*- coding: cp936 -*-
from Tkinter import *
root = Tk()
# Key事件處理函數
def printEvent(event):
    print '<Key>',event.keycode
# Return事件處理函數
def printReturn(event):
    print '<Return>',event.keycode
# 使用bt1來添加一個事件處理函數。
bt1 = Button(root,text = 'instance event')
bt1.bind('<Key>',printEvent)
bt1.focus_set()
bt1.grid()

root.mainloop()
# 當按鍵時,程式調用一次printEvent
'''13.事件各個層級音傳遞'''
# -*- coding: cp936 -*-
# bind:綁定instance與toplevel
# bind_class:綁定類處理函數
# bind_all:綁定應用所有事件
# 事件層級間”傳遞"
from Tkinter import *
root = Tk()
# Key事件處理函數
def printEvent(event):
    print '<instance>',event.keycode
# Return事件處理函數
def printToplevel(event):
    print '<toplevel>',event.keycode
def printClass(event):
    print '<bind_class>',event.keycode
def printAppAll(event):
    print '<bind_all>',event.keycode

# 在instance層級與printEvent綁定
bt1 = Button(root,text = 'instance event')
bt1.bind('<Return>',printEvent)

# 在bt1的Toplevel層級與printToplevel綁定
bt1.winfo_toplevel().bind('<Return>',printToplevel)

# 在class層級綁定事件printClass
root.bind_class('Button','<Return>',printClass)

# 在application all層級綁定printAppAll
bt1.bind_all('<Return>',printAppAll)

# 將焦點定位到bt1上,斷行符號一下,結果有4個列印輸出。
bt1.focus_set()
bt1.grid()

root.mainloop()
# 輸出結果:
# <instance> 13
# <bind_class> 13
# <toplevel> 13
# <bind_all> 13
# Return向進階別進行了“傳遞",調用順序為instance/class/toplevel/all
'''14.使用bind_class的後果'''
# -*- coding: cp936 -*-
# bind_class:綁定整個類的事件處理函數,將影響所有這個類的instance
from Tkinter import *
root = Tk()

def printClass(event):
    print '<bind_class>',event.keycode

# 改變button類的事件綁定
root.bind_class('Button','<Return>',printClass)
# 建立兩個Button
bt1 = Button(root,text = 'a button')
bt2 = Button(root,text = 'another button')

bt1.focus_set()
bt1.grid()
bt2.grid()

root.mainloop()
# 斷行符號,bt1列印結果
# TAB切換到bt2,斷行符號同樣列印出結果,即所有的Button對Return事件進行響應。
'''15.使用protocal綁定'''
# -*- coding: cp936 -*-
# protocol:與WM互動,綁定事件處理函數。
from Tkinter import *
root = Tk()

def printProtocol():
    print 'WM_DELETE_WINDOW'
    root.destroy()

# 使用protocol將WM_DELETE_WINDOW與printProtocol綁定
root.protocol('WM_DELETE_WINDOW',printProtocol)
root.mainloop()
# 程式在退出時列印'WM_DELETE_WINDOW'

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.