0

我敢肯定这个问题之前已经被问过很多次了,所以我提前道歉。我根本无法通过谷歌或搜索堆栈溢出找到答案。

我正在使用 wx 库在 python 中工作。wx.EVT_CHAR无论焦点如何,只要用户按下一个键,我只需要抛出一个。如何实现?有没有办法绑定所有的小部件?或者当应用程序收到按键时总是抛出事件的方法?

我尝试绑定应用程序本身、主框架和主面板。这些都没有完成在wx.EVT_CHAR按下键时总是抛出 a 的工作。

4

1 回答 1

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)
于 2012-11-16T18:48:57.807 回答