Edw*_*emo 4 python tkinter python-3.x
在我的应用程序中,我想在两种状态之间切换,并且在每个状态中我想要 -> 不希望绑定各种键。
现在我所做的是在我的类中创建了一个属性self.bindings = [],然后我有一个创建绑定的方法:
def _create_bindings(self):
self.bind("<Button-1>", self._canvas_on_click)
self.bindings.append("<Button-1>")
self.bind("<Double-Button-1>", self._canvas_on_2click)
self.bindings.append("<Double-Button-1>")
self.bind("<<arrow>>", self._canvas_on_arrows)
self.bindings.append("<<arrow>>")
self.bind("<space>", lambda event: self._toggle_selected())
self.bindings.append("<space>")
self.bind("<Key>", self._canvas_on_key_press)
self.bindings.append("<Key>")
self.bind("<BackSpace>", lambda event: self._empty_cell())
self.bindings.append("<BackSpace>")
self.bind("<Escape>", self._esc)
self.bindings.append("<Escape>")
Run Code Online (Sandbox Code Playgroud)
然后删除它们:
def _remove_bindings(self):
for b in self.bindings:
self.unbind(b)
Run Code Online (Sandbox Code Playgroud)
这并不可怕,但它确实会导致一些重复(请参阅创建函数:创建绑定+添加到列表)。
我可以创建一个包装器来组合这两个步骤,但无论如何我仍然需要管理一个额外的属性。
是否有一个我可以调用的函数可以为我提供与self.bindings上面相同的信息?
如果您调用bind不带任何参数的方法,它将返回您为该小部件绑定的所有事件的列表。你的_remove_bindings可能看起来像这样:
def _remove_bindings(self):
for event in self.bind():
self.unbind(event)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
779 次 |
| 最近记录: |