我使用 Tkinter(实际上是 customtkinter,如果它很重要的话)。我需要的是一个键绑定(例如转义键)。它必须在不同的框架中以不同的方式工作,并且在某些框架中我不需要它。我使用框架系统作为某种选项卡。根据其他主题中的答案,我假设框架默认情况下没有按键事件绑定,并且 ppl 建议编写
frame.focus_set()
为能够绑定键盘按钮。但这个漂亮的解决方案对我没有帮助。但对我来说最大的谜团是为什么这个例子运行良好:
from tkinter import *
main = Tk()
def leftKey(event):
print ("Left key pressed")
def rightKey(event):
print ("Right key pressed")
frame = Frame(main, width=100, height=100)
frame.bind('<Left>', leftKey)
frame.bind('<Right>', rightKey)
frame.focus_set()
frame.pack()
main.mainloop()
而且我的代码忽略了转义按钮:(警告!我知道我的代码风格很糟糕,请不要侮辱)
class MainFrame(customtkinter.CTkFrame):
def __init__(self, master, **kwargs):
super().__init__(master, corner_radius=0, **kwargs)
'''some code'''
class WorldInfoFrame(MainFrame):
def __init__(self, master):
super().__init__(master)
'''some code'''
self.bind("<Escape>", self.wrapper_info_button_pressed)
self.focus_set()
@staticmethod
def info_button_pressed():
print("static")
app.world_frame.info_button_released()
'''some code'''
def wrapper_info_button_pressed(self, event):
print("Wrapper")
self.info_button_pressed()
里面的内容app.world_frame.info_button_released()
并不重要,我的代码甚至不打印“Wrapper”。好吧,我希望有人可以帮助我或推动我走向正确的方向......