应用程序不会在菜单项中放入“&”符号(wxPython)

问题描述 投票:0回答:1

问题很简单,但是我仍然不知道,运行代码时,“&”号不会出现在“菜单项”中。为什么?!我在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()
python wxpython ampersand
1个回答
1
投票

SetItemLabel(自己,标签) 设置与菜单项关联的标签。

注意,如果此菜单项的ID对应于库存ID,则不必指定标签:wxWidgets将自动使用与该ID关联的库存项目>标签。有关更多信息,请参见构造函数。

普通菜单项的标签字符串(不包括分隔符)可能包括 加速器,可用于从键盘激活菜单项。可以使用&字符指定加速键。为了将“&”字符嵌入菜单项文本中,必须将“&”号加倍。 ** https://docs.wxpython.org/wx.MenuItem.html#wx-menuitem

与号(&)传统上用作菜单项上的加速器。如果按ALT按钮,菜单将显示(如果使用加速器,即&File定义,其中&旁边的F表示按下F将打开File菜单),加速器字母加下划线。按F,将打开File菜单。如果File菜单中的菜单项带有加速器,它们也将带下划线的字母,按下该字母将选择该菜单项。

如果您需要没有特殊含义的实际“&”号(&),例如Close & Quit,您需要将“与”号加倍,即,如果菜单不仅显示为Close && Quit,而且在用户按下字母&Close && Quit时也响应,则项目标签应创建为Close & QuitC

© www.soinside.com 2019 - 2024. All rights reserved.