1、需求说明
创建一个主窗体
在窗体上放置一个菜单栏
在菜单栏中放置一个下拉菜单
在下拉菜单中放置一个菜单项
给菜单项绑定一个单击事件,在单击事件中打开文件选择对话框,获取选择文件名
2、代码
1 import wx 2 import fileinput 3 4 class frmMain(wx.Frame): 5 app = wx.App() 6 menuBar = None 7 fileMenu = None 8 openMenuItem = None 9 fileDialog = None 10 11 def __init__(self, *args): 12 super(frmMain, self).__init__(*args) 13 self.menuBar = wx.MenuBar() 14 self.fileMenu = wx.Menu() 15 self.openMenuItem = wx.MenuItem(self.fileMenu, 1, ‘&Open..\tCtrl+O‘) 16 self.fileMenu.Append(self.openMenuItem) 17 self.menuBar.Append(self.fileMenu, title="File") 18 self.SetMenuBar(self.menuBar) 19 self.fileDialog = wx.FileDialog(self, "Open File", wildcard="files (*.html)|*.html", style=wx.FD_OPEN | wx.FD_FILE_MUST_EXIST) 20 self.Bind(wx.EVT_MENU, self.menu_Click) 21 self.SetSize((300,400)) 22 self.Center() 23 self.Show() 24 self.app.MainLoop() 25 26 def menu_Click(self, event): 27 if self.fileDialog.ShowModal() == wx.ID_CANCEL: 28 return 29 pathname = self.fileDialog.GetPath() 30 try: 31 with fileinput.input(pathname) as file: 32 line = file.readline() 33 print(line) 34 except IOError: 35 wx.LogError("Cannot open file ‘%s‘." % pathname)
3、逐行解释
第4行:主窗体类继承 wx.Frame
第6-9行:
- menuBar 窗体类成员菜单栏控件
- fileManu 窗体类成员下拉菜单控件
- openMenuItem 窗体类成员菜单项控件
- fileDialog 窗体类成员文件对话框控件
第11行:构造函数,必须添加参数 *agrs,否则窗体无法被实例化。
第12行:必须调用基类的构造函数,否则窗体无法被实例化。
第13-22行:
实例化菜单栏
实例化下拉菜单
实例化菜单项
将菜单项添加至下拉菜单中
将下拉菜单添加至菜单栏中
将菜单栏添加至窗体中
实例化文件对话框:wildcard 表示限制选择的文件扩展名,