应用程序不会在菜单项中放置符号 (wxPython)
App doesn't put Ampersands in Menu Items (wxPython)
问题很简单,但我还是想不通,当我 运行 代码时,&符号没有出现在菜单项中。为什么?!
我在 Thonny v3.2.7 上使用 Python 3.7.7 和 wxPython 4.1.0。
import wx
def OnQuit(e):
frame.Close()
app = wx.App()
frame = wx.Frame(None, -1, "wxPython Menu")
frame.SetSize(400, 300)
submenu1 = wx.Menu()
submenu1.Append(121, "Import Newsfeed List")
submenu1.Append(122, "Import Bookmarks")
submenu1.Append(123, "Import Mail")
menu1 = wx.Menu()
menu1.Append(10, "Open")
menu1.Append(11, "Save")
menu1.AppendSeparator()
menu1.AppendSubMenu(submenu1, "Import")
menu1.Append(13, "No Exit")
menu2 = wx.Menu()
menu2.Append(20, "Cut")
menu2.Append(21, "Copy")
menu2.Append(22, "Paste")
menu2.Enable(20, False)
menu3 = wx.Menu()
item = wx.MenuItem(menu3, 30, "&Quit\tCtrl+Q")
item.SetBitmap(wx.Bitmap("quit.png"))
menu3.Append(item)
menu3.Bind(wx.EVT_MENU, OnQuit, id = 30)
menuBar = wx.MenuBar()
menuBar.Append(menu1, "&File")
menuBar.Append(menu2, "&Edit")
menuBar.Append(menu3, "&Extras")
frame.SetMenuBar(menuBar)
frame.Centre()
frame.Show()
app.MainLoop()
SetItemLabel(self, label)
Sets the label associated with the menu item.
Note that if the ID of this menu item corresponds to a stock ID, then it is not necessary to specify a label: wxWidgets will automatically use the stock item > label associated with that ID. See the constructor for more info.
The label string for the normal menu items (not separators) may include the
accelerator which can be used to activate the menu item from keyboard. An accelerator key can be specified using the ampersand & character. In order to embed an ampersand character in the menu item text, the ampersand must be doubled. **
https://docs.wxpython.org/wx.MenuItem.html#wx-menuitem
& 符号传统上用作菜单项的快捷键。
如果您按下 ALT
按钮,您的菜单将(如果使用加速器定义,即 &File,其中 F
旁边的 &
意味着按下 F
将打开 File
菜单) 显示带有下划线的加速器字母。
按 F
,File
菜单打开。
如果 File
菜单中的菜单项有快捷键,它们也会有一个带下划线的字母,按下该字母将 select 该菜单项。
如果您需要没有特殊含义的实际和号 (&),例如Close & Quit
,你需要加倍符号,即项目标签应该创建为 Close && Quit
或 &Close && Quit
如果菜单不仅应该显示为 Close & Quit
而且在用户按下时响应字母 C
.
问题很简单,但我还是想不通,当我 运行 代码时,&符号没有出现在菜单项中。为什么?! 我在 Thonny v3.2.7 上使用 Python 3.7.7 和 wxPython 4.1.0。
import wx
def OnQuit(e):
frame.Close()
app = wx.App()
frame = wx.Frame(None, -1, "wxPython Menu")
frame.SetSize(400, 300)
submenu1 = wx.Menu()
submenu1.Append(121, "Import Newsfeed List")
submenu1.Append(122, "Import Bookmarks")
submenu1.Append(123, "Import Mail")
menu1 = wx.Menu()
menu1.Append(10, "Open")
menu1.Append(11, "Save")
menu1.AppendSeparator()
menu1.AppendSubMenu(submenu1, "Import")
menu1.Append(13, "No Exit")
menu2 = wx.Menu()
menu2.Append(20, "Cut")
menu2.Append(21, "Copy")
menu2.Append(22, "Paste")
menu2.Enable(20, False)
menu3 = wx.Menu()
item = wx.MenuItem(menu3, 30, "&Quit\tCtrl+Q")
item.SetBitmap(wx.Bitmap("quit.png"))
menu3.Append(item)
menu3.Bind(wx.EVT_MENU, OnQuit, id = 30)
menuBar = wx.MenuBar()
menuBar.Append(menu1, "&File")
menuBar.Append(menu2, "&Edit")
menuBar.Append(menu3, "&Extras")
frame.SetMenuBar(menuBar)
frame.Centre()
frame.Show()
app.MainLoop()
SetItemLabel(self, label)
Sets the label associated with the menu item.Note that if the ID of this menu item corresponds to a stock ID, then it is not necessary to specify a label: wxWidgets will automatically use the stock item > label associated with that ID. See the constructor for more info.
The label string for the normal menu items (not separators) may include the
accelerator which can be used to activate the menu item from keyboard. An accelerator key can be specified using the ampersand & character. In order to embed an ampersand character in the menu item text, the ampersand must be doubled. ** https://docs.wxpython.org/wx.MenuItem.html#wx-menuitem
& 符号传统上用作菜单项的快捷键。
如果您按下 ALT
按钮,您的菜单将(如果使用加速器定义,即 &File,其中 F
旁边的 &
意味着按下 F
将打开 File
菜单) 显示带有下划线的加速器字母。
按 F
,File
菜单打开。
如果 File
菜单中的菜单项有快捷键,它们也会有一个带下划线的字母,按下该字母将 select 该菜单项。
如果您需要没有特殊含义的实际和号 (&),例如Close & Quit
,你需要加倍符号,即项目标签应该创建为 Close && Quit
或 &Close && Quit
如果菜单不仅应该显示为 Close & Quit
而且在用户按下时响应字母 C
.