我有一个基本菜单栏,其代码如下:
# Add menubar
# Database menu
self.menubar = wx.MenuBar()
dbMenu = wx.Menu()
newDbItem = wx.Menu()
# New sub menu
dbNewItem = newDbItem.Append(wx.ID_NEW, 'New database...')
self.Bind(wx.EVT_MENU, self.newDbOnClick, dbNewItem)
# If there database loaded, show other menu items in
# new submenu
if self.dbPath != None:
# New table submenu item
tableNewItem = newDbItem.Append(wx.ID_NEW, 'New table...')
self.Bind(wx.EVT_MENU, self.newTblOnClick, tableNewItem)
# new row submenu item
rowNewItem = newDbItem.Append(wx.ID_NEW, 'New row...')
self.Bind(wx.EVT_MENU, self.newRowOnClick, rowNewItem)
# New column submenu item
columnNewItem = newDbItem.Append(wx.ID_NEW, 'New column...')
self.Bind(wx.EVT_MENU, self.newColOnClick, columnNewItem)
# Bind new submenu to db menu
dbMenu.AppendMenu(wx.ID_NEW, 'New', newDbItem)
# Open an already existing database file
openDbItem = dbMenu.Append(wx.ID_OPEN, 'Open...')
self.Bind(wx.EVT_MENU, self.openOnClick, openDbItem)
# Make a copy of the currently opened database
saveAsDbItem = dbMenu.Append(wx.ID_SAVEAS, 'Save as...')
self.Bind(wx.EVT_MENU, self.saveDbAs, saveAsDbItem)
# Exit the entire application
quitDbItem = dbMenu.Append(wx.ID_EXIT, 'Quit')
# Add the db menu to the menu bar
self.menubar.Append(dbMenu, '&Database')
实际上,当应用程序启动时,New Table、New Row和New Column选项不会显示在New子菜单中。但是,当我进入菜单并点击打开…选项并选择一个文件,这样dbpath变量就不再是空的,而是被填充的,应用程序也不会显示额外的菜单项。
我开始浏览网页,发现了一些提示。其中之一是刷新应用程序,因此我的OpenOnClick事件处理程序如下所示:
def openOnClick(self, e):
dlg = wx.FileDialog(self, "Choose a database file", style=wx.FD_OPEN)
if dlg.ShowModal() == wx.ID_OK:
self.dbPath = dlg.GetPath()
self.Update()
不过,这根本不起作用。另一个解决方案是使用刷新方法,因此上一个示例的最后一行如下所示:
self.Refresh()
这没有给我任何改进…
我真的没有收到错误信息。每次只会出现以下情况:
programma.py:37:wxpydeprocitionwarning:调用已弃用的项。改为使用append。
dbmenu.appendmenu(wx.id_new,'new',newdbitem)
有人能帮我找到正确的方法吗?或者能指出一个我看不到的错误吗?