我确定此问题之前已被多次询问过,所以我提前道歉。我只是无法通过谷歌或搜索堆栈溢出找到答案。
我正在使用wx库在python中工作。无论焦点如何,我只需要在用户按下某个键时随时抛出wx.EVT_CHAR
。如何实现这一目标?有没有办法绑定所有小部件?或者在应用程序收到按键时始终抛出事件的方法?
我尝试绑定应用程序本身,主框架和主面板。当按下某个键时,这些都没有完成总是抛出wx.EVT_CHAR
的工作。
答案 0 :(得分:0)
我能够通过编写一个递归方法来解决我的问题,该方法设置每个小部件接收字符并将每个小部件绑定到我的回调函数。这很简单,但是我带了一些谷歌搜索,意识到不是每个小部件都可以固有地接收文本事件(例如按钮)。希望这将在未来节省一些时间。应该注意的是,只有作为传递的父窗口的子节点或子节点的小部件才会绑定到回调方法。
def __RecursiveBinding(self, parent):
try:
parent.Bind(wx.EVT_CHAR, self.CharInputCallback)
parent.SetWindowStyleFlag(wx.WANTS_CHARS)
parent.Refresh()
children = parent.GetChildren()
if(children):
for child in children:
self.__RecursiveBinding(child)