针对不同事件触发相同的响应

时间:2013-10-02 17:05:49

标签: python user-interface wxpython

当我点击Help-> Help ...或File-> Exit时,我从 MessageBox 得到相同的响应。我不明白,我哪里出错了。 (我对wxPython很新)

我有来自 wxPython:

的代码段
class NewSheet(wx.Frame):
'''Anatomy of Sheet Frame'''
def __init__(self, parent, id, title,Nrows,Ncols,SheetName):
    wx.Frame.__init__(self, parent, -1, title, size = (550, 500))

    box = wx.BoxSizer(wx.VERTICAL)
    menuBar = wx.MenuBar()        
    menu1 = wx.Menu()
    menuBar.Append(menu1, '&File')        
    menu1.Append(1,"&Exit")
    self.Bind(wx.EVT_MENU, self.OnExit,id = 2)

    menuBar.Append(menu8, '&Help')
    menu8.Append(1, "&Help...")
    self.Bind(wx.EVT_MENU, self.OnHelp, id=1)
    self.SetMenuBar(menuBar)
    self.SetSizer(box)




    notebook = wx.Notebook(self, -1, style=wx.RIGHT)
    sheet1 = MySheet(notebook,Nrows,Ncols)
    notebook.AddPage(sheet1, str(SheetName))
    sheet1.SetFocus()
    box.Add(notebook, 1, wx.EXPAND)

    self.Centre()
    self.Show(True)

def OnExit(self,event):
    self.Close(True)  #NOT WORKING!

    self.Exit() #NOT WORKING EITHER!


def OnHelp(self,event):
    wx.MessageBox("HTML Based Help System coming soon","Help System",wx.OK | wx.ICON_INFORMATION, self)

当我点击Help-> Help ...或File-> Exit时,我从MessageBox得到相同的响应。我不明白,我哪里出错了。你能告诉我吗?

1 个答案:

答案 0 :(得分:0)

您需要在菜单中指定不同的id值吗?.Append并在Binds中使用相同的ID。尝试:

    em = menu1.Append(-1, "&Exit")
    self.Bind(wx.EVT_MENU, self.OnExit, id=em)

    menuBar.Append(menu8, '&Help')
    hm = menu8.Append(-1, "&Help...")
    self.Bind(wx.EVT_MENU, self.OnHelp, id=hm)

这告诉wx选择并返回新的ID,然后使用它们。实际上稍后你会发现这两个人有预定义的身份证wx.ID_EXIT& wx.ID_HELP有关详情,请参阅here,以便最好使用:

    menu1.Append(wx.ID_EXIT, "&Exit")
    self.Bind(wx.EVT_MENU, self.OnExit, id=wx.ID_EXIT)
    
    menuBar.Append(menu8, '&Help')
    menu8.Append(wx.ID_HELP, "&Help...")
    self.Bind(wx.EVT_MENU, self.OnHelp, id=wx.ID_HELP)

正如您会发现,在某些平台上,它可以通过标准翻译等技巧来实现。