舉個例子,對于一個按鈕來說,有兩種方式來響應(yīng)按鈕的點擊。
一種是在按鈕創(chuàng)建時,設(shè)置command參數(shù)為回調(diào)函數(shù),稱為間接綁定(indirect binding),示例如下:
btn1 = Button(frame, text="a button", command=btnPressed)
這種方式簡單,回調(diào)函數(shù)(btnPressed)不需要任何參數(shù)。另外這種方式還多考慮到了用戶的習(xí)慣,如:當(dāng)焦點在按鈕上,同時按下空格鍵時,同樣也觸 發(fā)了btnPressed函數(shù)。也就是說這種方式隱藏了一些東西,有可能不是編程人員一開始的設(shè)想,這就極有可能產(chǎn)生bug。
另外一種是利用bind函數(shù),直接為按鈕指定事件的類型和回調(diào)函數(shù),稱為直接綁定(direct binding),示例如下:
btn2 = Button(frame, text="a button")
btn2.bind('<Button-1>',btnPressed)
這種方式相對間接方式來說,好處就是直接可控,沒有隱藏的風(fēng)險。另外對于回調(diào)函數(shù)需要event作為輸入?yún)?shù),能夠了解更多的操作信息。缺點就是如果程序員如果沒有充分考慮界面的可操作性或友好程度,對用戶一些習(xí)慣的操作就不會有響應(yīng)。
對于簡單的系統(tǒng),我建議用間接的方式。如果是復(fù)雜的系統(tǒng),牽扯到復(fù)雜的人機(jī)交互、快捷鍵之類的話,還是選擇直接綁定的方式比較好。
聯(lián)系客服