10.1.1 如何创建一个菜单栏并把它附加到一个框架?
要创建一个菜单栏,使用wx.MenuBar构造函数,它没有参数:
wx.MenuBar()
一旦菜单栏被创建了,使用SetMenuBar()方法将它附加给一个wx.Frame(或其子类)。通常这些都在框架的__init__或OnInit()方法中实施:
menubar = wx.MenuBar()
self.SetMenuBar
你不必为菜单栏维护一个临时变量,但是这样做将使得添加菜单到菜单栏多少更简单点。要掌握程序中的其它地方的菜单栏,使用wx.Frame.GetMenuBar()。
10.1.2 如何创建一个菜单并把它附加到菜单栏?
wxPython菜单栏由一个个的菜单组成,其中的每个菜单都需要分别被创建。下面显示了wx.Menu的构造函数:
wx.Menu(title="", style=0)
对 于wx.Menu只有一个有效的样式。在GTK下,样式wx.MENU_TEAROFF使得菜单栏上的菜单能够被分开并作为独立的选择器。在其它平台下, 这个样式没有作用。如果平台支持,那么菜单被创建时可以有一个标题。图10.1显示了一个带有三个菜单的空白窗口。例10.1显示了被添到一个菜单栏上的 一系列菜单,这些菜单没有被添加菜单项。
图10.1
例10.1 添加菜单到一个菜单栏
import wx
class MyFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, "Simple Menu Example")
p = wx.Panel(self)
menuBar = wx.MenuBar()# 创建一个菜单栏
menu = wx.Menu()# 创建一个菜单
menuBar.Append(menu, "Left Menu")# 添加菜单到菜单栏
menu2 = wx.Menu()
menuBar.Append(menu2, "Middle Menu")
menu3 = wx.Menu()
menuBar.Append(menu3, "Right Menu")
self.SetMenuBar(menuBar)
if __name__ == "__main__":
app = wx.PySimpleApp()
frame = MyFrame()
frame.Show()
app.MainLoop()
在wxPython 的菜单API中,一个对象的大部分处理是由它的容器类来管理的。在本章的后面,我们将讨论wx.Menu的特定的方法,因为这些方法的大多数涉及到菜单中 的菜单项的处理。在这一节的剩余部分,由于我们正在谈论处理wx.Menu对象,所以我们将列出wx.MenuBar的那些涉及到菜单的方法。表10.1 显示了wx.MenuBar中的四个方法,它们处理菜单栏的内容。
表10.1 在菜单栏处理菜单的wx.MenuBar的方法
Append(menu, title):将menu参数添加到菜单栏的尾部(靠右显示)。title参数被用来显示新的菜单。如果成功返回True,否则返回False。
Insert(pos, menu, title):将 给定的menu插入到指定的位置pos(调用这个函数之后,GetMenu(pos) == menu成立)。就像在列表中插入一样,所有后面的菜单将被 右移。菜单的索引以0开始,所以pos为0等同于将菜单放置于菜单栏的左端。使用GetMenuCount()作为pos等同于使用Append。 title被用于显示名字。函数如果成功则返回True。
Remove(pos):删除位于pos的菜单,之后的其它菜单左移。函数返回被删除的菜单。
Replace(pos, menu, title):使用给定的menu,和title替换位置pos处的菜单。菜单栏上的其它菜单不受影响。函数返回替换前的菜单。
wx.MenuBar包含一些其它的方法。它们用另外的方式处理菜单栏中的菜单,如表10.2所示。
表10.2 wx.MenuBar的菜单属性方法
EnableTop(pos, enable):设置位置pos处的菜单的可用/不可用状态。如果enable是True,那么该菜单是可用的,如果是False,那么它不可用。
GetMenu(pos):返回给定位置处的菜单对象。
GetMenuCount():返回菜单栏中的菜单的数量。
FindMenu(title):返回菜单栏有给定title的菜单的整数索引。如果没有这样的菜单,那么函数返回常量wx.NOT_FOUND。该方法将忽略快捷键,如果有的话。
GetLabelTop(pos)
SetLabelTop(pos, label):得到或设置给定位置的菜单的标签。wxpython窗口不显示出来
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
随笔:CUDA和Miniconda3在ubuntu的关系和使用
CUDA和Miniconda3是两种完全不同类型的东西,没有可比性。一个是计算平台,一个是包管理器。安装了Miniconda3,不代表你拥有了CUDA。Miniconda3本身只是一个管理工具。对于深度学习等GPU计算任务,你不需要在系统层面单独安装庞大的CUDA Toolkit。应该利用Miniconda3/Conda的强大功能,在特定的环境中安装所需版本的。这是更简洁、更专业的管理方式。确保先安装好NVIDIA显卡驱动,这是使用GPU进行计算的基础。在Ubuntu上安装NVIDIA显卡驱动。
#ubuntu #CUDA #Miniconda CUDA Python
















