2016-11-09 49 views

回答

0

不,沒有內置任何內容。您必須添加自定義綁定。

例如,您可以在Button類上添加類綁定。例如:

root.bind_class("Button", "<ButtonPress-1>", log_buttonpress, add="+") 

然後,您可以定義一個名爲log_buttonpress方法,它看起來是這樣的:

def log_buttonpress(self, event): 
    with open("/tmp/log.txt", "a+") as f: 
     f.write("=> " + event.widget.cget("text") + "\n") 

當然,這隻會捕捉鼠標點擊。它不會捕獲使用鍵盤點擊的按鈕。此外,在釋放按鈕之前,不會調用該按鈕的命令,因此可能會記錄被點擊但未實際激活的按鈕。這些問題是可以解決的,但需要更多的代碼。這只是顯示了一般概念,而不是剪切和粘貼解決方案。

另一種創建自己的子類Button並將此特殊綁定添加到每個實例的方法。通過使用綁定標籤,您可以爲每個實例添加一個特殊標籤,然後您只需爲該標籤設置一個綁定即可。

例如:

class MyButton(tk.Button): 
    def __init__(self, *args, **kwargs): 
     tk.Button.__init__(self, *args, **kwargs) 
     bindtags = list(self.bindtags()) 
     bindtags.insert(1, "MyButton") 
     self.bindtags(tuple(bindtags)) 

    @classmethod 
    def log_button(cls, event): 
     with open("/tmp/junk.txt", "a+") as f: 
      f.write("?> " + event.widget.cget("text") + "\n") 

... 
root = tk.Tk() 
root.bind_class("MyButton", "<ButtonRelease-1>", MyButton.log_button) 

b1 = MyButton(...) 
b2 = MyButton(...) 
如果使用`命令=`或`綁定()`與每一個按鈕,那麼您可以分配一些函數來做到這一點
+0

謝謝:)這對我有很大的幫助:) – Supertraff

相關問題