python Tkinter事件綁定,參數傳遞


轉載

原文地址:https://blog.csdn.net/weixin_38428980/article/details/81225731

一般情況下,事件處理都是下面這樣的

#coding=utf-8
 
import Tkinter
 
def handler():
    '''事件處理函數'''
    print "handler"
 
 
if __name__=='__main__':
    root = Tkinter.Tk()
    # 通過中介函數handlerAdapotor進行command設置
    btn = Tkinter.Button(text=u'按鈕', command=handler)
    btn.pack()
    root.mainloop()

但如果handler()函數需要參數該怎么辦呢,很簡單,使用lambda

#coding=utf-8
 
import Tkinter
 
def handler(a, b, c):
    '''事件處理函數'''
    print "handler", a, b, c
 
 
if __name__=='__main__':
    root = Tkinter.Tk()
    # 通過中介函數handlerAdapotor進行command設置
    btn = Tkinter.Button(text=u'按鈕', command=lambda : handler(a=1, b=2, c=3))
    btn.pack()
    root.mainloop()

但對於想使用event的情況,像btn.bind("<Button-1>", handler),又該怎么辦呢,如下:

#coding=utf-8
 
import Tkinter
 
def handler(event, a, b, c):
    '''事件處理函數'''
    print event
    print "handler", a, b, c
 
 
if __name__=='__main__':
    root = Tkinter.Tk()
    btn = Tkinter.Button(text=u'按鈕')
 
    # 通過中介函數handlerAdaptor進行事件綁定
    btn.bind("<Button-1>",lambda event:handle(1, 2, 3))
 
    btn.pack()
    root.mainloop()
 

 


免責聲明!

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



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