wxpython选择键按下事件将不会运行

时间:2017-12-21 08:53:30

标签: python wxpython choice

我正在使用wxpython和wx.Choice。 我试图绑定它但它没有达到功能而且不起作用,为什么呢? 此外,当我专注于这个选择(他已经绑定),它确实运行该功能,但两次。 为什么这样以及如何改变它?

 Select=wx.Choice(parent, choices=SectorList,pos=pos,size=(100,25))
 Select.Bind(wx.EVT_KEY_DOWN,self.OnInputCharPressSelect)

1 个答案:

答案 0 :(得分:0)

我不确定你在做什么,因为你没有一个小的可运行样本。这是一个例子:

import wx


class MyPanel(wx.Panel):

    def __init__(self, parent): 
        wx.Panel.__init__(self, parent)

        txt = wx.TextCtrl(self)
        self.choice_widget = wx.Choice(self, choices=['a', 'b', 'c'])
        self.choice_widget.Bind(wx.EVT_KEY_DOWN, self.OnInputCharPressSelect)

        main_sizer = wx.BoxSizer(wx.VERTICAL)
        main_sizer.Add(txt, 0, wx.ALL, 5)
        main_sizer.Add(self.choice_widget, 0, wx.ALL, 5)

        self.SetSizer(main_sizer)

    def OnInputCharPressSelect(self, event):
        print('OnInputCharPressSelect fired')

class MainFrame(wx.Frame):

    def __init__(self):
        wx.Frame.__init__(self, None, title='Choices')

        panel = MyPanel(self)

        self.Show()


if __name__ == '__main__':
    app = wx.App(False)
    frame = MainFrame()
    app.MainLoop()

当我从Choice窗口小部件进入TextCtrl窗口小部件时,绑定事件处理程序不会触发,这是正确的。如果我使用鼠标选择项目也不会触发。为此,您需要将Choice窗口小部件绑定到EVT_CHOICE

要启动OnInputCharPressSelect,您必须突出显示Choice窗口小部件(即已选中),然后按键盘上的某个键。这将导致每次按键时触发处理程序一次。

我使用wxPython 4.0.0b2和Python 3.6在Window 7上测试了这段代码。