我正在使用wxpython和wx.Choice。 我试图绑定它但它没有达到功能而且不起作用,为什么呢? 此外,当我专注于这个选择(他已经绑定),它确实运行该功能,但两次。 为什么这样以及如何改变它?
Select=wx.Choice(parent, choices=SectorList,pos=pos,size=(100,25))
Select.Bind(wx.EVT_KEY_DOWN,self.OnInputCharPressSelect)
答案 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上测试了这段代码。