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)
特别说明:
1、__init__必须增加一个参数*args,否则会报错;
2、__init__必须构造super中的__init__,否则在调用基类中的方法时会报错,因为没有实例化基类;