0

当我单击 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 得到相同的响应。我不明白,我哪里错了。你能给些建议么?

4

1 回答 1

0

您需要在 menu? 中指定不同的 id 值。在 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,然后使用它们。实际上,稍等片刻之后,您应该会发现这两个具有预定义的 IDwx.ID_EXIT在此处wx.ID_HELP查看更多信息,因此最好使用:

    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)

正如您会发现,在某些平台上,它通过执行标准翻译等技巧有所帮助。

于 2013-10-03T05:15:02.963 回答