0
我想綁定到事件(一個用於Ctrl + Z和一個用於Ctrl + Y)到一個非常複雜的python tkinter窗體(根有很多子框架,如果將事件綁定到每個事件上會非常煩人和多餘)。我希望有一種方法將鍵綁定到根,這樣即使我的注意力集中在子部件上,綁定也會觸發。我到目前爲止所嘗試的是:Python tkinter鍵綁定到所有後續的小部件
def _init_gui(self, root):
""" Initializes all members of the gui"""
tkinter.Frame.__init__(self, root) #Superclass init
self.root = root
width, height = root.winfo_screenwidth(), root.winfo_screenheight()
#Most of the code is left out because it is not neccessary
self.root.bind_all("Control-z", lambda _: self.undo())
self.root.bind_all("Control-y", lambda _: self.redo())
但是,這似乎並不奏效。有沒有適當的解決方案呢? (我也嘗試了bind-Method和結果相同的缺點)
'bind'或'bind_all'應該爲這項工作。確保你在命令中使用了尖括號,並且lambda在這裏不需要:'self.root.bind(「」,self.undo)' –
Novel
謝謝你,愚蠢的我......然而lambda是需要的,因爲事件通過並且撤消和重做的簽名顯然不需要論證。 – PfannkuchenXD
因此將其添加到簽名中。標準形式應該是'def undo(self,event = None):'以便它可以從綁定或通常調用。如果你想添加跟蹤調用它的能力:'def undo(self,* args):' – Novel